You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何隐藏subprocess.run调用时弹出的终端窗口?

解决PyInstaller打包后subprocess调用弹出终端的问题

方法1:修改subprocess.run参数(推荐)

在调用subprocess.run()时添加creationflags=subprocess.CREATE_NO_WINDOW参数,该参数会让Windows系统不创建新终端窗口执行子进程。

修改后的示例代码:

import subprocess
command = ["powershell", "-Command", "Get-ChildItem"]
subprocess.run(command, creationflags=subprocess.CREATE_NO_WINDOW)

如果程序需要跨平台兼容,可以通过判断操作系统来选择性添加参数:

import subprocess
import os

command = ["powershell", "-Command", "Get-ChildItem"]
kwargs = {}
if os.name == 'nt':  # 仅在Windows系统下启用该参数
    kwargs["creationflags"] = subprocess.CREATE_NO_WINDOW

subprocess.run(command, **kwargs)

方法2:打包时启用无控制台模式

如果主程序本身不需要显示终端窗口,打包时添加--windowed(或--noconsole)参数,主程序运行时不会弹出终端,子进程也不会额外弹出窗口。

修改后的打包命令:

PS> pyinstaller --windowed script.py

注意:此方法会禁用主程序的控制台输出,若程序需要日志输出或用户交互,不建议使用。

补充示例(CMD命令场景)

如果调用的是CMD命令,同样可以用上述方式处理:

import subprocess
subprocess.run(["cmd", "/c", "dir"], creationflags=subprocess.CREATE_NO_WINDOW)

内容的提问来源于stack exchange,提问作者Philip Nelson

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 09:05:00