PowerShell运行python无法进入>>>交互提示符(非PATH问题)
问题根因
你看到的NativeCommandError不是Python本身启动失败,是PowerShell默认会将控制台原生程序输出到标准错误流(stderr)的内容识别为错误并抛出拦截。从运行输出可以看到,Python已经打印了版本信息和Type "help", "copyright", "credits" or "license" for more information.的欢迎提示,说明Python进程本身已经正常启动,只是部分输出走了stderr流触发了PowerShell的拦截机制,导致Python的交互输入输出通道没有正常绑定到当前终端会话,所以看不到>>>交互提示符,这个问题和PATH配置、Python安装损坏无关。
解决方案
按优先级从高到低尝试以下方法即可:
- 临时快速解决:启动Python时追加
-i参数,强制开启交互模式,执行命令:
执行后会直接加载交互提示符,不需要修改任何配置。python -i - 一劳永逸修复当前用户环境:配置Python适配Windows旧标准IO流的环境变量,在PowerShell中执行以下命令即可永久生效:
执行后重启PowerShell,后续直接输入[Environment]::SetEnvironmentVariable('PYTHONLEGACYWINDOWSSTDIO', '1', 'User')python就可以正常进入交互模式。如果只想在当前会话临时生效,执行$env:PYTHONLEGACYWINDOWSSTDIO = 1即可。 - 排查命令拦截:检查系统PATH包含的路径下是否存在
python.bat、python.cmd这类包装脚本,这类脚本会拦截python命令调用,导致Python进程IO流无法直接绑定终端,找到后删除或重命名对应脚本即可。 - 改用官方Python启动器:Windows安装Python时默认会安装全局
py启动器,不受流识别问题影响,执行以下命令即可唤起对应版本的Python交互环境:py -3
内容的提问来源于stack exchange,提问作者Philip Cohen
相关产品推荐
相关产品推荐

