如何强制退出我的Python制作EXE
我已经得到了我用pyInstaller创建一个exe文件一点点Python应用程序:如何强制退出我的Python制作EXE
import subprocess
try:
taskCommand = 'tasklist /FI "ImageName eq pc-client.exe"'
reply = subprocess.Popen(taskCommand, stdout = subprocess.PIPE).communicate()[0]
for line in reply.split("\n"):
if line.startswith("pc-client.exe"):
PID = line.split()[1]
print PID
except:
pass
try:
killCommand = ("TASKKILL /f /t /PID " + PID)
subprocess.Popen(killCommand, stdout = subprocess.PIPE).communicate()[0]
except:
pass
try:
print "Restarting Papercut Client..."
subprocess.Popen(r"\\server\path\to\file\filename.exe", stdout = subprocess.PIPE).communicate()[0]
except:
pass
sys.exit()
当exe文件运行时,它开辟了窗口命令窗口,将运行其代码(它是非交互式的),然后我希望窗口消失时,它完成!
我应该在Python代码的末尾放置什么,以使窗口在完成时关闭。我试过os.quit(),os._exit(),sys.quit()& sys.exit()但是他们都没有关闭窗口!
由于我从我的代码创建一个exe文件,我应该使用别的东西吗?我无法编译noconsole标志,因为它需要它来实际运行命令...
谢谢。
您可以通过将
console=False
在规范文件阻止上来,在所有的Windows命令提示符。例如:
exe = EXE(pyz,
a.scripts,
exclude_binaries=True,
name='YourApp',
console=False,
icon='IMGFolder\game_icon_cs6_icon.ico')
如果您在命令行中没有一个规范文件运行时,使用NOCONSOLE标志:
pyinstaller.py --noconsole yourscript.py
有关PyInstaller选项的详细信息:https://pyinstaller.readthedocs.io/en/stable/usage.html#options
如果您想要提示出来然后关闭,sys.exit()为我工作,但没有看到更多的代码,这将很难说。
UPDATE
由于子流程都参与其中,请记住,在命令提示符下将继续开放,直到所有进程都解决了(父母和子女)。
它看起来像是用PID来杀死第一个任务(在杀死它之前我会打印出PID来确认你是否有正确的)。然后你运行第二个任务(你想运行的主文件?),但不要杀死它。
您是否试图关闭命令提示符但保持运行.exe?
有关于这里杀死进程一些有用的信息: How to kill a python child process created with subprocess.check_output() when the parent dies?
啊,这是有道理的。所以我可以杀死父进程(我的代码)一旦子进程(.exe文件)开始,让它运行? – user3514446
是的,但命令窗口不会消失,因为您通过子进程调用产生了“从提示符中”运行的exe文件。除非我错过了某些东西或误解了目标。 – The4thIceman