Py2app使用控制台或gui,但不是两者都使用?

时间:2013-07-13 16:56:06

标签: python py2app

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

关于如何打开终端shell和GUI的任何想法?我认为这是我的setup.py或我的py2app设置错误。这是我的setup.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

感谢大家的帮助!

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

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

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

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