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

如何让Python代码(含exe)运行于旧Windows控制台宿主而非Win11终端?

让Python生成的EXE运行在旧版Windows控制台宿主(conhost.exe)

以下是几种可行的解决方案,按操作复杂度从易到难排序:

1. 修改EXE文件的兼容性设置

这是针对单个程序的最简配置方式:

  • 找到打包好的EXE文件,右键选择「属性」
  • 切换到「兼容性」选项卡,勾选「用旧版控制台运行」(部分Windows 11版本需点击「更改所有用户的设置」后找到该选项)
  • 点击「确定」保存,之后双击该EXE会自动用conhost.exe启动

2. 通过批处理调用conhost启动EXE

若需要脚本批量启动或不想修改EXE属性,可直接让conhost托管程序:

  • 编写批处理文件(.bat),内容如下:
    conhost.exe "C:\完整路径\你的程序.exe"
    
  • 运行该批处理,程序会直接在旧版控制台打开,不会调用Windows Terminal

3. 全局切换默认终端为conhost.exe

如果希望所有控制台程序都默认使用旧版宿主,可修改系统设置:

  • 打开Windows Terminal,点击顶部菜单「设置」
  • 切换到「启动」选项卡,在「默认终端应用」中选择「Windows控制台主机(conhost.exe)」
  • 保存设置后,所有控制台程序都会默认用conhost打开,包括你的Python EXE

4. 代码层面强制关联conhost(打包前配置)

若需要在代码中直接控制,可通过ctypes调用Windows API确保程序在conhost环境运行:

import ctypes
import sys

def force_conhost():
    kernel32 = ctypes.WinDLL('kernel32', use_last_error=True)
    # 通过设置控制台标题触发conhost关联(核心逻辑是让系统使用旧版宿主)
    kernel32.SetConsoleTitleW("Old Console Session")

if __name__ == "__main__":
    force_conhost()
    # 你的业务代码
    print("运行在旧版控制台中")

打包时使用常规PyInstaller命令即可,例如:pyinstaller --onefile your_script.py

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 05:42:44