通过终端或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
感谢大家的帮助!
答案 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
如果我使用该选项构建,我的应用程序会在运行时打开终端窗口。