簡體   English   中英

Pyinstaller.app 包不會在 Mac 上打開

[英]Pyinstaller .app bundle won't open on Mac

我創建了一個 wxPython GUI 應用程序,我想分發它以在 macOS 上運行。

首先,這是我的文件夾結構:

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

MyApp.py文件運行script.py並且script.py引用resources文件夾中的文件。

為了創建.app包,我使用Pyinstaller ,如下所示:

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

這會創建一個.app文件,但是當我嘗試打開它時它會立即關閉。

為了調查這個問題,我去了這里:

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

這從終端運行應用程序,但我收到此錯誤:

FileNotFoundError:[Errno 2] 沒有這樣的文件或目錄:'/Users/MyAccount/resources'

script.py中,我使用os.getcwd()獲得了對root目錄的引用,但是在嘗試訪問resources文件夾時,運行應用程序似乎沒有使用此相對路徑。 我對此很陌生,所以我不確定我可能會出錯,任何幫助將不勝感激!

您可以使用運行時信息來獲取代碼所在文件夾的路徑:

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')

但是,如果沒有在Pyinstaller命令行(或.spec文件)中指定它們,您的resources文件夾中的兩個文件可能不會包含在您的應用程序文件夾中:

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

但我從未嘗試過。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM