在 macos 上使用 pyinstaller 编译 mediapipe 时出现问题

2023-12-05

我在 macos 上通过 pyinstaller 使用 mediapipe 编译项目时遇到问题

到目前为止我尝试过:

pyinstaller  --windowed --noconsole pose_edge.py

pyinstaller  --onefile --windowed --noconsole pose_edge.py

pyinstaller --noconsole pose_edge.py

.app 无法打开,如果我尝试 unix exec,我会得到

  Traceback (most recent call last):
  File "pose_edge.py", line 26, in <module>
  File "mediapipe/python/solutions/selfie_segmentation.py", line 54, in __init__
  File "mediapipe/python/solution_base.py", line 229, in __init__
FileNotFoundError: The path does not exist.
[36342] Failed to execute script pose_edge

我使用 conda,我的环境是 python 3.8、mediapipe 0.8.5 和 OSX 10.15.7

提前致谢


我也遇到了这个问题,几分钟前就解决了——到目前为止,我正在以手动方式解决它,但我确信有一种惯用的方法可以在 pyinstaller 中使用规范文件和数据导入。对于这个答案,我假设您没有使用--onefilepyinstaller 的选项,而是在单个文件夹中创建二进制文件。

也就是说,答案是cp -r将安装在虚拟环境中的 mediapipe 中的模块目录(或安装初始 mediapipe 包的任何位置,例如 /virtualenvs/pose_record-2bkqEH7-/lib/python3.9/site-packages/mediapipe/modules)复制到您的dist/main/mediapipe目录。这将使您捆绑的 mediapipe 库能够访问 binarypb 文件,我相信该文件包含姿势检测算法的图形和权重。

UPDATE:我已经找到了一种更惯用的 pyinstaller 方法来让它运行。在里面.specpyinstaller 生成的文件,您可以通过以下方式自动添加文件:

在文件的顶部,在block_cipher = None,添加以下函数:

def get_mediapipe_path():
    import mediapipe
    mediapipe_path = mediapipe.__path__[0]
    return mediapipe_path

然后,在以下几行之后:

pyz = PYZ(a.pure, a.zipped_data,
             cipher=block_cipher)

添加以下使用以下行用于为二进制文件创建目录的原生 Tree 类:

mediapipe_tree = Tree(get_mediapipe_path(), prefix='mediapipe', excludes=["*.pyc"])
a.datas += mediapipe_tree
a.binaries = filter(lambda x: 'mediapipe' not in x[0], a.binaries)

添加后,您可以从 CLI 运行编译命令,例如:pipenv run pyinstaller --debug=all main.spec --windowed --onefile

这使我能够构建一个适用于 mediapipe 的可执行文件。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 macos 上使用 pyinstaller 编译 mediapipe 时出现问题 的相关文章

随机推荐

  • .NET 中的“计算机不是我的成员”错误

    这个错误非常烦人 我已经进行了各种搜索 并且已经能够解决这个问题 我是该应用程序的几位开发人员之一 也是唯一遇到此问题的开发人员 我之前已经通过将扩展添加到项目属性中的 我的扩展 面板 这会生成不同的错误 然后删除该新扩展来临时修复了该问题
  • 从日历中获取日期之前的 18 年

    我需要获得 18 年后的完整日期 dd mm yyyy 我用代码作为 日历计算 Calendar getInstance calc add 日历 YEAR 18 它检索年而不是月或日之前的 18 年 即使在任何月份的 1 号等极端情况下 我
  • 如何在列表视图的行之间留出空白?

    在我的应用程序中 我需要列表视图在列表行之间有空格 这样我就可以为每一行提供背景 并且它看起来像行块 我尽了最大努力但没有找到任何解决方案 您可以使用android divider and android dividerHeight自定义行
  • 使用仅包含 ISO 周的数据集将 ISO 周聚合为几个月

    我的数据位于数据框中 其结构如下 df2 lt data frame Year c 2007 Week c 1 12 Measurement c rnorm 12 mean 4 sd 1 不幸的是 我没有每次测量的完整日期 例如缺少天数 只
  • 如何防止 GWT 应用程序中的 DoubleSubmit?

    澄清一下什么是双重提交 当用户点击提交按钮两次时 服务器将处理相同的 POST 数据两次 为了避免这种情况 除了在单次提交后禁用按钮之外 大多数 Web 框架 如 Struts 都提供了令牌机制 我正在 GWT 中寻找与此等效的内容 如果您
  • 如何获取上传文件的最后修改日期?

    我上传一个 XML 文件以将其内容迁移到我的数据库 但我想首先存储该文件的最后修改日期 以确保该文件与上一个文件相比没有发生任何更改 如何获取文件的最后修改日期 有没有 javascript 函数可以做到这一点 当您使用文件输入上传文件时
  • ASP.NET MVC Excel导出文件格式错误

    我目前正在编写一个 ASP NET MVC 5 控制器操作 以将一些数据导出到 Excel 文件 使用我在此处找到的一些代码 它有效 主要是 它输出一个 Excel 文件 我可以打开该文件 但在显示以下错误消息之前无法打开 Export x
  • 单次跳跃最多回溯 n 个楼梯,最多 k 步

    您需要爬一个有 n 个台阶的楼梯 并且您决定通过跳上台阶来获得一些额外的锻炼 单次跳跃最多可以完成 k 步 返回爬楼梯时所有可能的跳跃顺序 并排序 我的实施显然给了我错误的答案 def climbingStaircase n k final
  • 创建 Outlook 规则以根据主题行中的文本创建文件夹(如果需要)[关闭]

    Closed 这个问题需要多问focused 目前不接受答案 我正在寻找一种清晰的方法来使用 vba 读取收到电子邮件的主题行 以便创建新文件夹或仅使用现有文件夹将电子邮件移入 我看过一些 vba 示例 但没有一个解决在 Outlook 的
  • 如何在新的heroku应用程序中使用okta oauth登录

    我在我的express node js 应用程序中使用okta oauth 当我在 heroku 中部署并运行新应用程序并浏览登录页面时 我收到 404 状态代码 由于某种原因 我无法验证我的第三方 okta 应用程序的合法性 然而 在本地
  • Cookie 不会删除

    所以我的index php 中有这样的代码 如果用户选中了记住我框 那么它将设置一个名为 RememberMe 的 cookie 有效期为 2 周 这部分工作正常 现在我遇到的问题是当他们按下注销时删除这个cookie 按注销后 它们会被重
  • 替换字符串中的单个字符

    问题是需要替换给定字符串中的单个字符 同时保留字符串中的其他字符 代码是 if command equalsIgnoreCase replace single System out println Enter the character t
  • 保持两个线程之间的布尔值同步

    在一个线程 线程2 中 我更改了一个值 例如 CheckSuccess false 现在主线程 thread1 GUI Form 没有接收到更改 如何 传播 所有线程周围的更改 我的印象是线程应该操纵数据 而不是在单独的实例上工作 除非被告
  • 何时何地放置 @class 声明

    我正在开发一个包含多个自定义类的项目 我有一个CardModel NSObject 具有一些整数属性来保存数据 以及Deck NSObject 有一个数组可以容纳一堆CardModels然后一个CardView UIView 有一个Card
  • javax.faces.FacesException:表达式错误:命名对象:net.bootsfaces.layout.Well 未找到

    我正在尝试使用 BootsFaces 0 7 测试 JSF 2 2 项目 该项目在 GlassFish 3 和 PrimeFaces 5 2 上运行得非常顺利 但是在使用 BootsFaces 库中的任何标签的页面上 例如
  • 在 C 中哪种方式更好地将数组作为函数参数传递?

    有 3 种方法将数组作为函数参数传递 形式参数为一个指针 e g void myFunction int param 形式参数为一个指定大小的数组 e g void myFunction int param 10 形式参数为未调整大小的数组
  • 使用 .htaccess 清理 URL

    我正在尝试重定向我的域上的链接 我想要实现的是 当用户点击链接时 mydomain com index php dir myfolder 我希望他被重定向到这个 URL 但浏览器栏应该显示这个 URL mydomain com myfold
  • 将txt解析为块

    我有一个txt文件 其结构如下 start id 1 date 21 05 2018 summ 500 end start id 7 date 23 05 2018 summ 500 owner guest end 我需要在字典列表中解析它
  • Silverlight - Scrollviewer 中的 DataGrid,Column.Width="*" 使数据网格占据多个屏幕宽度

    当我进行以下设置时 宽度为 的最后一列会导致数据网格创建巨大的水平滚动条 将网格扩展到屏幕的多个宽度 我不太确定为什么会这样 但我确实需要一种方法来避免这种情况 我不想用 长度 模拟 列 编辑 显然我不是唯一注意到这一点的人 http co
  • 在 macos 上使用 pyinstaller 编译 mediapipe 时出现问题

    我在 macos 上通过 pyinstaller 使用 mediapipe 编译项目时遇到问题 到目前为止我尝试过 pyinstaller windowed noconsole pose edge py pyinstaller onefil