2

我的程序通过终端或 PythonLauncher 启动时运行完美。我的程序同时使用了通过 pyside 编写的 GUI 和终端控制台。当我使用 py2app 包装我的程序时,运行生成的 .app 文件只会产生 GUI,而不是终端 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

谢谢大家的帮助!

4

2 回答 2

1

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

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

于 2013-07-15T05:38:37.823 回答
0

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

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

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

于 2017-03-11T06:43:37.750 回答