Pyinstaller .app捆绑包无法在Mac上打开

时间:2019-10-19 07:43:57

标签: python wxpython pyinstaller

我已经创建了一个wxPython GUI应用程序,并且希望分发它以在macOS上运行。

首先,这是我的文件夹结构:

root/
├── MyApp.py
|
├── scripts/
|   ├── script.py
|
├── resources/
|   ├── file1.json
|   ├── file2.txt

MyApp.py文件运行script.pyscript.py引用resources文件夹中的文件。

要创建.app捆绑包,我像这样使用Pyinstaller

cd /path/to/root/folder
pyinstaller MyApp.py --windowed

这会创建一个.app文件,但是在我尝试打开它时会立即关闭。

要调查此问题,我去了这里

MyApp.app > Contents > MacOS > MyApp (A Unix executable)

这将从终端运行应用程序,但出现此错误:

  

FileNotFoundError:[错误2]没有这样的文件或目录:'/ Users / MyAccount / resources'

script.py中,我使用rootos.getcwd()目录的引用,但是在尝试访问resources时运行应用程序似乎未使用此相对路径夹。我对此很陌生,所以我不确定哪里可能出错,对您的帮助将不胜感激!

1 个答案:

答案 0 :(得分:1)

您可以使用runtime information来获取代码所在文件夹的路径:

import sys
import os

if getattr(sys, 'frozen', False):
    # this is a Pyinstaller bundle
    root_path = sys._MEIPASS
else:
    # normal python process
    root_path = os.getcwd()

然后,使用以下方法访问您的file1.json感冒:

path_to_file1 = os.path.join(root_path, 'resources', 'file1.json')

但是,如果未在resources命令行(或Pyinstaller文件中)指定,则.spec文件夹中的两个文件可能不会包含在应用程序文件夹中: / p>

pyinstaller --windowed --add-data "resources/file1.json:resources" --add-data "resources/file2.txt:resources" MyApp.py

您也许可以在--add-data选项中指定文件夹,如下所示:

pyinstaller --windowed --add-data "resources:resources" MyApp.py

但是我从来没有尝试过。