use*_*047 5 macos pyqt pyinstaller pyqt4 py2app
所以我有这个pyqt项目,我想使用pyinstaller构建一个osx.app dmg
pyinstaller创建了输出
dist/MyApplication.app
Run Code Online (Sandbox Code Playgroud)
我可以直接从终端运行它
cd dist
./MyApplication.app/Contents/MacOS/MyApplication
Run Code Online (Sandbox Code Playgroud)
但是,如果我尝试直接运行应用程序包,请使用
open -a MyApplication.app
Run Code Online (Sandbox Code Playgroud)
要么
open .
# double click on MyApplication.app folder (appears just as MyApplication from finder)
Run Code Online (Sandbox Code Playgroud)
它启动然后立即退出
现在,如果我导航到
$ cd ./Contents/MacOS/
Run Code Online (Sandbox Code Playgroud)
并打开一个发现者
$ open .
#then double click on MyApplication
Run Code Online (Sandbox Code Playgroud)
它运行正常,但在后台打开终端窗口
Last login: Fri Mar 14 18:01:13 on ttys005
MyApplication/dist/MyApplication.app/Contents/MacOS/MyApplication ; exit;
MyApplication/dist/MyApplication.app/Contents/MacOS/MyApplication ; exit;
Run Code Online (Sandbox Code Playgroud)
我使用类似的步骤来构建一个没有任何问题的Windows exe(虽然在Windows中没有MyApplication.app概念)
我该如何诊断这个问题?
谢谢
所以我按照这个py2app 教程来看看它是否比 pyinstaller 更好用,使用这段代码
\n\nif __name__=="__main__":\n print "Hello"\nRun Code Online (Sandbox Code Playgroud)\n\n并得到了类似的结果
\n\n当我这样做时,即应用程序关闭
\n\nopen -a HelloTest.app\nRun Code Online (Sandbox Code Playgroud)\n\n虽然它运行良好
\n\n./HelloTest.app/Contents/MacOS/HelloTest\nRun Code Online (Sandbox Code Playgroud)\n\n但是教程中的这个花絮解释了它
\n\nWhen run normally, your application\xe2\x80\x99s stdout \nand stderr output will go to the Console logs. \nTo see them, open the Console application:\n\n$ open -a Console\nRun Code Online (Sandbox Code Playgroud)\n\n检查控制台日志后,似乎如果我运行
\n\nopen -a MyApplication.app\nRun Code Online (Sandbox Code Playgroud)\n\n该应用程序在沙箱中运行,如果您打开任何要写入的文件而不指定绝对\n路径,它将无法创建该文件
\n\n如果我跑
\n\n./MyApplication.app/Contents/MacOS/MyApplication\nRun Code Online (Sandbox Code Playgroud)\n\n应用程序可以直接在当前目录中创建文件
\n\n因此,我必须返回并在创建文件时指定完整路径,而不是仅仅假设它将在工作目录中创建。
\n| 归档时间: |
|
| 查看次数: |
1212 次 |
| 最近记录: |