Macos 如果从finder执行应用程序包,使用python构建的OSX应用程序将立即退出,但从命令行运行良好
所以我有这个pyqt项目,我想使用pyinstaller构建一个osx.app dmg pyinstaller在中创建了输出Macos 如果从finder执行应用程序包,使用python构建的OSX应用程序将立即退出,但从命令行运行良好,macos,pyqt,pyqt4,pyinstaller,py2app,Macos,Pyqt,Pyqt4,Pyinstaller,Py2app,所以我有这个pyqt项目,我想使用pyinstaller构建一个osx.app dmg pyinstaller在中创建了输出 dist/MyApplication.app 我可以直接从终端运行它 cd dist ./MyApplication.app/Contents/MacOS/MyApplication 但是,如果我尝试直接使用 open -a MyApplication.app 或 它开始,然后立即停止 现在如果我导航到 $ cd ./Contents/MacOS/ 打开一个查找器
dist/MyApplication.app
我可以直接从终端运行它
cd dist
./MyApplication.app/Contents/MacOS/MyApplication
但是,如果我尝试直接使用
open -a MyApplication.app
或
它开始,然后立即停止
现在如果我导航到
$ 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概念)
如何诊断此问题
谢谢所以我遵循这条代码,看看它是否比pyinstaller工作得更好
if __name__=="__main__":
print "Hello"
得到了相似的结果
i、 当我关闭时,应用程序关闭
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
应用程序可以直接在当前目录中创建文件
因此,我必须在创建文件时返回并指定完整路径,而不是仅仅假设它将在工作目录中创建。使用pyinstaller构建OSX应用程序包时,如果使用相对路径并尝试在工作目录中写入文件,它将崩溃 要在工作目录中写入文件而不使用绝对路径,请将路径设置为:
path=os.path.join(os.path.dirname(sys.argv[0]),“file”)我也遇到了这个问题。我不认为OpenA是一个有效的解决方案(你的应用程序用户也必须这样做)。我遇到了同样的问题。我知道这篇文章有点老,但如果可能的话,你能详细说明一下你是如何解决这个问题的吗?我将非常感激。
./MyApplication.app/Contents/MacOS/MyApplication