2013-07-13 1 views
1

터미널이나 PythonLauncher를 통해 내 프로그램을 실행할 때 완벽하게 실행됩니다. 내 프로그램은 pyside와 터미널 콘솔을 통해 작성된 GUI를 모두 사용합니다. py2app를 사용하여 프로그램을 래핑 할 때 생성 된 .app 파일을 실행하면 터미널 쉘이 아닌 GUI 만 생성됩니다. 따라서 터미널 쉘을 열지 않고 터미널 쉘에서 하위 프로세스를 호출 할 수 없으므로 내 프로그램이 작동하지 않습니다.Py2app는 콘솔 또는 GUI를 사용하지만 둘 다 사용하지 않습니까?

어떻게 터미널 셸과 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

터미널과 GUI가 동시에 있습니까? 나에게 끔찍한 디자인처럼 보인다! GUI에서 만든 별도의 창을 사용할 수 없습니까? 아니면 새 명령 프롬프트를 열지 않으시겠습니까? (저는 Windows 사용자가 아니지만 어렵지 않아야합니다 ...). – Bakuriu

+0

나는 실제로 그것을 할 수 없다. subprocess.call을 사용하여 터미널에 전화해야하므로 터미널 창 *을 반드시 열려야합니다. 또한, 나는 윈도우가 아닌 OS X에있다. 기본적으로 내 파이썬 응용 프로그램은 .app로 컴파일되지 않을 때 작동하지만, 하나에 컴파일하면 내 subprocess.call 명령을 수신하는 터미널 인스턴스가 열리지 않기 때문에 중단됩니다. –

+0

AFAIK'subprocess.call'에는 터미널과 관련된 * anything *이 없습니다. "내 subprocess.call 명령을 수신하기 위해 터미널의 인스턴스를 열지 않으므로 중단됩니다."라는 의미를 설명하십시오. – Bakuriu

답변

1

py2app로 만든 응용 프로그램은 GUI 응용 프로그램 번들이며 터미널 창을 열지 않습니다. 터미널 창을 정말로 필요로한다면, 입력을 위해 GUI 창을 사용하는 대신 터미널 창에서 애플리케이션을 시작할 수 있습니다 (애플리케이션 이름이 MyApp 인 경우 "MyApp.app/Contents/MacOS/MyApp").

BTW. 나는 당신이 "subprocess.call로 터미널을 호출해야 함"이라는 의미를 이해하지 못합니다. 하위 프로세스를 사용하여 명령 줄 도구를 실행하는 것은 해당 프로세스와 상호 작용할 필요가없는 경우 (예 : vim이나 emacs와 같은 TTY 편집기를 시작하기 때문에) 애플리케이션 번들에서 올바르게 작동합니다. 당신이 py2applet를 사용하여 setup.py를 빌드 할 때

+0

이것은 나를 위해 작동하지 않습니다. dist/MyApp.app/Contents/MacOS/MyApp를 실행할 때도 출력이 나오지 않습니다. – user239558

0

, 당신은 --emulate-shell-environment 옵션을 사용하여 시도 할 수 있습니다 :

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

내 어플은 해당 옵션을 사용하여 구축 할 경우 실행 터미널 창을 엽니 다.

관련 문제