首页 > 解决方案 > pyinstaller 找不到添加的文件 - Mac OS

问题描述

我正在尝试使用 pyinstaller 3.6 在 Mac OS Catalina 10.15 上创建一个基于 python 3.7.7 的应用程序。我使用 Homebrew 和带有 pip 的 pyinstaller 安装了 python。

这个名为 GUI.py 的 Python 代码需要五个图像,这些图像存储在一个名为“resources”的文件夹中,并且所有内容都在“Project”文件夹中。所以项目的结构如下:

项目:

GUI.py 用于定位图像的路径类似于“resources/image1.png”、“resources/image2.png”等其余图像。

我打开一个终端并输入以下内容:

pyinstaller --add-data /Users/user/Desktop/Project/resources/*:resources /Users/user/Desktop/Project/GUI.py

然后创建 dist 和 build 文件夹以及 GUI.spec 文件。

现在,当我转到 dist/GUI 文件夹并找到可执行文件时,问题就出现了。我双击它打开我的应用程序,但出现以下错误:

FileNotFoundError: [Errno2] No such file or directory: 'resources/image1.png'

但是,如果我打开终端并转到 GUI 可执行文件所在的 dist/GUI 目录并手动执行它:

./GUI

它运行良好,应用程序已打开。

当我将选项添加--nocnosole到 pyinstaller 指令时,它也会发生同样的情况:

pyinstaller --add-data /Users/user/Desktop/Project/resources/*:resources --noconsole /Users/user/Desktop/Project/GUI.py

这会创建一个名为 GUI 的 Mac OS 应用程序,当我双击它时它不会打开。但是,和以前一样,如果我打开终端并转到 GUI/Contents/MacOS/,我会找到 GUI 可执行文件并手动执行它:

./GUI

然后它工作正常。

我不知道我是否正确添加了包含图像的资源文件夹,或者它是否是 pyinstaller 的 Mac OS 问题。

我添加了一些带有额外信息的注释:

我到处寻找解决方案,阅读 pyinstaller 提供的有关添加数据的文档,但我一无所获。

标签: pythonmacosaddpyinstaller

解决方案


这不是一个 python 问题,而是一个 Mac 问题。在 Mac 上启动应用程序时,启动应用程序的目录实际上是“/.app/Contents/MacOS/”。我的猜测是,要么您需要将资源目录放在该位置,以便应用程序在启动时可以找到它,要么您需要找到一种使用直接路径而不是看起来像您的相对路径的方法'重新使用。我对 pyinstaller 不是很熟悉,但鉴于您在上面使用的语法,我的猜测是这样的:

pyinstaller --add-data /Users/user/Desktop/Project/resources/*:/LibraryDir/PythonStuff/resources /Users/user/Desktop/Project/GUI.py

推荐阅读