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

升级Python2后,Windows启动器无法运行Python3/读取Shebang行

解决方案

这个问题我之前帮朋友排查过,Windows下Python多版本共存时,升级老版本后shebang失效大概率是Python Launcher的配置或者文件关联出了问题,给你几个一步步排查的方案:

1. 先确认Python Launcher是否正常识别所有版本

Windows上的shebang其实是靠Python Launcher for Windows(也就是py.exe)来解析的,升级Python2可能打乱了它的版本识别。

打开命令提示符(CMD),输入:

py -0

这会列出当前Launcher能识别的所有Python版本,你应该能看到Python 2.7.13和Python 3.6.4的条目。如果3.6没显示,说明它没被Launcher注册,需要重新修复Python3的安装:找到Python3.6的安装包,运行后选择「Modify」,勾选「Install launcher for all users」和「Add Python to PATH」,完成修复。

2. 用Launcher支持的正确shebang格式

你之前尝试加Windows路径前缀是没必要的,py.exe支持简化的shebang写法:

  • 要跑Python3,首行写:#!python3
  • 要跑Python2,首行写:#!python2
  • 甚至可以指定具体版本:#!python3.6或#!python2.7

关键是要用py.exe来启动脚本,比如在CMD里输入:

py your_script.py

而不是直接双击脚本或者输入your_script.py(这时候可能调用的是关联到Python2的文件 handler)。

3. 修正.py文件的默认关联

如果双击脚本还是强制跑Python2,说明.py文件的默认打开程序不是py.exe,而是Python2.7的python.exe。可以通过CMD命令重置关联:

  1. 先设置文件类型关联:
assoc .py=Python.File
  1. 再设置该类型的打开命令指向py.exe:
ftype Python.File="C:\Windows\py.exe" "%1" %*

执行完这两个命令后,双击脚本就会通过py.exe来解析shebang了。

4. 检查PATH环境变量的优先级

如果你习惯直接用python your_script.py命令运行,那PATH里的路径顺序会影响哪个Python被调用。升级Python2后,它的路径可能被放到了PATH的最前面,导致优先启动Python2。

修改方法:

  • 右键「计算机」→「属性」→「高级系统设置」→「环境变量」
  • 在「系统变量」里找到PATH,点击「编辑」
  • 把Python3的安装路径(比如C:\Python36和C:\Python36\Scripts)拖到Python2路径(C:\Python27、C:\Python27\Scripts)的上方
  • 保存后重启CMD,输入python --version测试是否默认是Python3(如果需要的话)

5. 验证测试

写两个简单的测试脚本验证:

  • test_py2.py:
#!python2
import sys
print("Running Python version:", sys.version)
  • test_py3.py:
#!python3
import sys
print("Running Python version:", sys.version)

然后分别运行:

py test_py2.py
py test_py3.py

如果输出分别对应2.7.13和3.6.4,说明问题解决了。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 08:12:32