运行pyw文件打包的exe程序时如何隐藏弹出的cmd控制台窗口?
隐藏控制台窗口的解决方法
1. 直接运行脚本时隐藏窗口
- 把你的Python脚本后缀从
.py改成.pyw,Windows系统下.pyw格式的脚本会默认用pythonw.exe运行,不会弹出控制台窗口,直接后台执行。 - 如果你习惯用命令行启动,运行时用
pythonw 你的脚本名.pyw替代python 你的脚本名.py即可。
2. 代码层面优化子进程调用
你现有代码最后用os.system("python op1.py")调用子脚本,这个调用本身也会弹出新的控制台窗口,建议替换为subprocess的无窗口调用写法:
把最后一行的os.system("python op1.py")替换为以下代码:
import subprocess startupinfo = subprocess.STARTUPINFO() startupinfo.dwFlags |= subprocess.STARTF_USESHOWWINDOW subprocess.Popen(["pythonw", "op1.py"], startupinfo=startupinfo, creationflags=subprocess.CREATE_NO_WINDOW)
这样调用op1.py的时候也不会弹出额外的控制台窗口。
3. 打包成exe可执行文件时隐藏窗口
如果你需要把程序打包成单独的exe文件分发运行,用pyinstaller打包的时候加--windowed或者--noconsole参数即可:pyinstaller --noconsole --onefile 你的脚本名.pyw
打包出来的exe运行时就不会弹出任何控制台窗口,完全后台运行。
注意事项
- 如果你代码里有
print()输出内容,隐藏控制台之后这些输出就看不到了,调试阶段可以保留控制台,正式运行再隐藏即可。 - pyttsx3、tkinter这些依赖在无控制台模式下可以正常运行,不需要额外调整。
内容的提问来源于stack exchange,提问作者Tom
相关产品推荐
相关产品推荐

