使用auto-py-exe生成窗口式EXE时PowerShell弹窗频繁闪关问题
解决auto-py-to-exe生成窗口模式EXE时PowerShell窗口闪关问题
问题描述
终端运行Python代码时,不会出现PowerShell窗口反复闪关的情况,但用auto-py-to-exe生成隐藏控制台窗口的EXE后,该现象出现。目前设置为「控制台模式」能避免此问题,但切换到「窗口模式」时,PowerShell命令窗口频繁闪关,对工作造成干扰,需要找到抑制该行为的方法。
相关代码如下:
import subprocess p = subprocess.run( ["powershell.exe", "-NoProfile", "-ExecutionPolicy", "Bypass", "-File", "C:/Users/xxxxx/Documents/betterNetstatOut.ps1"], capture_output=True, text=True )
解决方案
方法1:添加PowerShell隐藏窗口参数
调用PowerShell时加入-WindowStyle Hidden参数,强制隐藏执行窗口,修改后的代码如下:
import subprocess p = subprocess.run( ["powershell.exe", "-NoProfile", "-ExecutionPolicy", "Bypass", "-WindowStyle", "Hidden", # 新增隐藏窗口参数 "-File", "C:/Users/xxxxx/Documents/betterNetstatOut.ps1"], capture_output=True, text=True )
方法2:使用Windows系统创建标志(仅Windows生效)
通过subprocess.CREATE_NO_WINDOW标志,从系统层面阻止控制台窗口弹出,代码示例:
import subprocess import sys if sys.platform == "win32": p = subprocess.run( ["powershell.exe", "-NoProfile", "-ExecutionPolicy", "Bypass", "-File", "C:/Users/xxxxx/Documents/betterNetstatOut.ps1"], capture_output=True, text=True, creationflags=subprocess.CREATE_NO_WINDOW ) else: # 非Windows系统执行原命令 p = subprocess.run( ["powershell.exe", "-NoProfile", "-ExecutionPolicy", "Bypass", "-File", "C:/Users/xxxxx/Documents/betterNetstatOut.ps1"], capture_output=True, text=True )
方法3:检查auto-py-to-exe配置
- 生成EXE时,确认「窗口模式」下未勾选强制显示控制台的选项;
- 尝试更新auto-py-to-exe到最新版本,避免版本bug导致的窗口异常。
内容的提问来源于stack exchange,提问作者Zarif Rahman
相关产品推荐
相关产品推荐

