首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何强制退出我的python生成的exe

如何强制退出我的python生成的exe
EN

Stack Overflow用户
提问于 2017-10-11 14:15:59
回答 1查看 2.2K关注 0票数 0

我有一个小小的python应用程序,我用pyInstaller创建了一个exe文件:

代码语言:javascript
运行
复制
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运行时,它会在windows命令窗口中打开,运行它的代码(它是非交互式的),然后我希望该窗口在它完成时消失!

我应该在python代码的末尾放什么以使窗口在完成时关闭。我已经尝试过os.quit()、os._exit()、sys.quit()和sys.exit(),但是它们都没有真正关闭窗口!

当我从我的代码中创建一个exe时,我应该使用其他的东西吗?我无法使用noconsole标志进行编译,因为它需要它来实际运行命令.

谢谢。

EN

Stack Overflow用户

回答已采纳

发布于 2017-10-11 17:09:43

可以通过以下方式阻止windows命令提示符的出现

代码语言:javascript
运行
复制
console=False

在你的文件里。例如:

代码语言:javascript
运行
复制
exe = EXE(pyz,
      a.scripts,
      exclude_binaries=True,
      name='YourApp',
      console=False,
      icon='IMGFolder\game_icon_cs6_icon.ico')

如果您在没有spec文件的情况下从命令行运行,请使用noconsole标志:

代码语言:javascript
运行
复制
pyinstaller.py --noconsole yourscript.py

有关PyInstaller选项的更多信息:https://pyinstaller.readthedocs.io/en/stable/usage.html#options

如果您希望提示符出现然后关闭,sys.exit()对我起作用,但是如果没有看到更多的代码,就很难分辨。

更新

由于涉及子进程,请记住命令提示符将保持打开状态,直到解决所有进程(父进程和子进程)。

它看起来就像你用它的PID杀死了第一个任务(我会在你杀死它之前打印出PID以确认你有正确的PID)。然后运行第二个任务(要运行的主文件?)但永远不要杀了它。

您是否试图关闭命令提示符,但保持.exe运行?

这里有一些关于杀灭过程的好信息:output() when the parent dies?

票数 0
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46690560

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档