Py2app要么使用控制台,要么使用gui,但不能同时使用两者



当我的程序通过终端或PythonLauncher启动时,它可以完美运行。我的程序同时使用通过pyside编写的GUI和终端控制台。当我使用py2app包装程序时,运行生成的.app文件只会产生GUI,而不会产生终端shell。因此,我的程序不起作用,因为在没有打开终端外壳的情况下,它无法调用终端外壳中的子进程。

关于如何打开终端外壳和GUI,有什么想法吗?我认为这是我的setup.py或py2app设置的错误。这是我的设置.py

from setuptools import setup
APP = ['myProgram.py']
DATA_FILES = []
OPTIONS = {'argv_emulation': True}
setup(
    app=APP,
    data_files=DATA_FILES,
    options={'py2app': OPTIONS},
    setup_requires=['py2app'],
)

这是我用来用py2app编译应用程序的终端命令

python setup.py py2app

谢谢大家的帮助!

py2app创建的应用程序是GUI应用程序包,不会打开终端窗口。如果你真的需要一个终端窗口,而不是使用GUI窗口进行输入,你可以从终端窗口启动应用程序(如果你的应用程序名为MyApp,则为"MyApp.app/Contents/MacOS/MyApp")。

顺便说一句。我不明白你说的"必须通过subprocess.call调用终端"是什么意思。使用子流程运行命令行工具在应用程序捆绑包中运行得很好,除非你需要与该流程交互(例如,因为你正在启动像vim或emacs这样的TTY编辑器)。

使用py2applet构建setup.py时,可以尝试使用--emulate-shell-environment选项:

python setup.py py2app --emulate-shell-environment

如果我使用该选项进行构建,则我的应用程序在运行时会打开一个终端窗口。

最新更新