我正在尝试使用pyinstaller 3.6在Mac OS Catalina 10.15上创建基于python 3.7.7的应用程序。我使用Homebrew和pyinstaller和pip安装了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
它运行良好,并且已打开应用程序。
当我在pyinstaller指令中添加选项--nocnosole
时,情况相同:
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 --add-data /Users/user/Desktop/Project/:. /Users/user/Desktop/Project/GUI.py
我到处都在寻找解决方案,请阅读pyinstaller提供的有关添加数据的文档,但我什么都没找到。
答案 0 :(得分:0)
这不是一个python问题,而是一个Mac问题。在Mac上启动应用程序时,启动该应用程序的目录实际上是“ /.app/Contents/MacOS/”。我的猜测是,要么您需要将资源目录放置在该位置,以便应用程序启动时就可以找到它,或者您需要找到一种使用直接路径而不是它看上去相对路径的方法。重新使用。我对pyinstaller不太熟悉,但是鉴于您上面使用的语法,我的猜测应该是这样的:
pyinstaller --add-data /Users/user/Desktop/Project/resources/*:/LibraryDir/PythonStuff/resources /Users/user/Desktop/Project/GUI.py