2017-10-11 1 views
0

나는 내가 exe 파일을 만드는 데에 pyInstaller 중에 사용 조금 파이썬 응용 프로그램을 가지고 내 파이썬 만든 EXE를 강제 종료하기 명령 창, 그것의 코드를 실행합니다 (비 대화식) 그리고 난 창문이 사라질 때 끝낼 때!어떻게

완성되었을 때 창을 닫으려면 파이썬 코드 끝 부분에 무엇을 넣어야합니까? 나는 os.quit(), os._exit(), sys.quit(), & sys.exit()을 시도했지만 실제로 그 중 아무 것도 창을 닫지 않습니다!

내 코드에서 exe 파일을 만들 때 다른 것을 사용해야합니까? 명령을 실제로 실행하기 위해 noconsole 플래그로 컴파일 할 수 없습니다 ...

고마워.

답변

0

당신은 당신의 스펙 파일에

console=False 

를 넣어 전혀 올라오고에서 Windows 명령 프롬프트를 차단할 수 있습니다. 예를 들어 : https://pyinstaller.readthedocs.io/en/stable/usage.html#options

당신이 만약 다음 pyInstaller 중에 옵션에 대한 자세한 정보를 원하시면

pyinstaller.py --noconsole yourscript.py 

:

exe = EXE(pyz, 
     a.scripts, 
     exclude_binaries=True, 
     name='YourApp', 
     console=False, 
     icon='IMGFolder\game_icon_cs6_icon.ico') 

당신은 스펙 파일없이 명령 줄에서 실행하는 경우는 noconsole 플래그를 사용 프롬프트가 닫히고 sys.exit()이 작동하지만 더 많은 코드를 보지 않으면 알 수 없습니다.

서브 프로세스가 포함되어 있기 때문에

UPDATE, 모든 프로세스 (부모와 자식을) 해결 될 때까지 명령 프롬프트가 열린 상태로 유지 것이라는 점을 명심하십시오.

PID로 첫 번째 작업을 죽이는 것처럼 보입니다 (내가 올바른 PID를 가지고 있는지 확인하기 위해 PID를 인쇄하기 전에 PID를 인쇄합니다). 그런 다음 두 번째 작업 (실행하려는 주 파일은 실행합니까?)을 실행하지 마십시오.

명령 프롬프트를 닫고 .exe를 계속 실행하려고합니까?

여기에 프로세스를 종료에 대한 몇 가지 좋은 정보가있다 : How to kill a python child process created with subprocess.check_output() when the parent dies?

+0

아, 그 말이 ... 그래서 자식 프로세스 (.exe 인)이 시작되면 나는 (내 코드) 부모 프로세스를 죽일 수 , 그것을 실행 떠나? – user3514446

+0

그래,하지만 서브 프로세스 호출을 통해 "프롬프트에서"exe를 생성했기 때문에 명령 창이 사라지지 않을 것입니다. 내가 뭔가를 놓치지 않았거나 목적을 잘못 해석하지 않는 한. – The4thIceman