在osx下使用python 3,QT5,我从源代码构建一个应用程序。
当我直接从二进制文件中运行它时,它运行良好。
当我运行它时启动open -a sakia.app
它运行良好。
但是当我尝试从启动板或发现者启动它时,它会在几秒钟后失败,而不会在屏幕上显示任何窗口。
日志中没有比以下更多:
May 13 20:01:57 my-macbook com.apple.xpc.launchd[1] (sakia.5432[4022]): Service exited with abnormal code: 255
我无法在谷歌案例中看到开放命令有效并且直接开放应用程序没有。
我认为我对文件位置没有任何问题,但是我无法确定它,我不知道如何准确地检查它,因为没有日志...
我应该寻找什么?有关调试或原因的任何想法吗?
编辑:
这是我的Info.plist:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict><key>CFBundleIdentifier</key>
<string>sakia</string>
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>NSHighResolutionCapable</key>
<string>True</string>
<key>LSBackgroundOnly</key>
<string>False</string>
<key>CFBundleShortVersionString</key>
<string>0.0.0</string>
<key>CFBundleExecutable</key>
<string>MacOS/sakia.bin</string>
<key>CFBundleIconFile</key>
<string>sakia.ico</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleDisplayName</key>
<string>sakia</string>
<key>CFBundleName</key>
<string>sakia</string>
<key>StandardErrorPath</key>
<string>/tmp/test.stderr</string>
</dict>
</plist>
答案 0 :(得分:0)
应用程序正在打开一个文件,其中包含一个特殊字符,这会导致应用程序失败。 (G)
当您从命令行打开应用程序时,您将获得
locale.getpreferredencoding(False) = UTF-8
但是如果你直接从GUI(启动板或取景器)打开,你就得到了
locale.getpreferredencoding(False) = US-ASCII
我并不完全理解导致这种情况的行为,但只需在info.Plist中添加它就可以了
<dict>
<key>LANG</key>
<string>en_US.UTF-8</string>
<key>LC_ALL</key>
<string>en_US.UTF-8</string>
</dict>