所以我有这个pyqt项目,我想使用pyinstaller构建一个osx.app dmg
pyinstaller创建了输出
dist/MyApplication.app
我可以直接从终端运行它
cd dist ./MyApplication.app/Contents/MacOS/MyApplication
但是,如果我尝试直接运行应用程序包,请使用
open -a MyApplication.app
要么
open . # double click on MyApplication.app folder (appears just as MyApplication from finder)
它启动然后立即退出
现在,如果我导航到
$cd ./Contents/MacOS/
并打开一个发现者
$open . #then double click on MyApplication
它运行正常,但在后台打开终端窗口
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;
我使用类似的步骤来构建一个没有任何问题的Windows exe(虽然在Windows中没有MyApplication.app概念)
我该如何诊断这个问题?
谢谢
解决方法
所以我跟着这个
py2app tutorial看看它是否比pyinstaller更好用这个代码
if __name__=="__main__": print "Hello"
并得到了类似的结果
即当我这样做时应用程序关闭
open -a HelloTest.app
虽然它运行良好
./HelloTest.app/Contents/MacOS/HelloTest
但是教程中的这个花絮解释了它
When run normally,your application’s stdout and stderr output will go to the Console logs. To see them,open the Console application: $open -a Console
检查控制台日志后,好像我跑了
open -a MyApplication.app
应用程序在沙箱中运行,如果打开任何要写入的文件而不指定绝对值
它将无法创建文件的路径
如果我跑
./MyApplication.app/Contents/MacOS/MyApplication
直接应用程序可以在当前目录中创建文件
所以我必须返回并在创建文件时指定完整路径,而不是假设它将在工作目录中创建.