从Dock中隐藏终端,以获取使用PyInstaller创建的可执行文件

时间:2015-02-23 19:13:29

标签: python macos python-2.7 packaging pyinstaller

我使用PyInstaller(v2.1)为不同平台捆绑Python应用程序。我在我的GUI中使用外部工具调用PyInstaller捆绑的可执行文件,该文件将充当后端服务器。

我遇到了在Mac上捆绑的问题(OS X 10.10)。当我的PyInstaller捆绑的Unix可执行文件(它的目的是作为后台进程运行)从GUI工具调用时,它成功启动没有窗口,但遗憾的是,它还有停靠栏中的终端图标。

在构建可执行文件时,我提供了--no-console选项,debug = False,但没有效果。这似乎在Windows上完美运行。

我是否应该查看一些PyInstaller选项以防止可执行图标在Dock上弹出?或者我应该查看一些OS X选项吗?

总结:我希望防止后台进程在从外部应用程序调用时出现在Dock上(在OS X上)。

另一个问题也可能是:创建纯后台应用程序的Pyinstaller指令是什么?

注意:我还尝试将我的python应用程序捆绑为.app,并尝试干扰* .plist文件,但这并没有帮助(除了它没有#&# 39;似乎是正确的,因为它只是作为后台进程运行)

以下是plist文件的外观:

...
<plist version="1.0">
<dict>
    ...
    <key>CFBundlePackageType</key>
    <string>APPL</string>
    <key>LSBackgroundOnly</key>
    <string>1</string>
    <key>LSUIElement</key>
    <true/>
</dict>
</plist>

2 个答案:

答案 0 :(得分:1)

  

*我也尝试将我的python应用程序捆绑为.app,并试图干扰 .plist文件

如果你说明你在这里做了什么,会有所帮助。通常,设置为true时,键 LSUIElement 应该可以执行您想要的操作。作为docs州: -

  

指定应用程序是否为代理应用程序,即不应出现在Dock或Force Quit窗口中的应用程序。有关详细信息,请参阅LSUIElement。

答案 1 :(得分:0)

Tristan79 PyInstaller的fork,包括重新编译的引导加载程序和补丁,为我解决了这个问题。