Windows 11下多版本Python运行异常问题求助
在Windows 11中让Python shebang行双击生效的解决方案
问题根源
Windows系统本身不原生解析shebang行,之前Windows 10能生效是因为依赖了Python官方的py.exe启动器,而你的Windows 11环境中,.py文件的默认关联可能绑定到了Python 2.7的可执行文件,导致忽略shebang直接用Python 2运行所有脚本。
解决步骤
1. 确认Python Launcher(py.exe)已安装
Python 3.10安装时默认会附带py.exe,路径通常是C:\Windows\py.exe。如果找不到这个文件,重新安装Python 3.10,务必勾选:
Add Python to PATHInstall launcher for all users
2. 重新关联.py文件到py.exe
图形界面操作:
- 右键任意
.py文件 → 选择「打开方式」→「选择另一个应用」→「更多应用」→ 找到「Python Launcher」(对应py.exe),勾选「始终使用此应用打开.py文件」。
命令行操作(管理员权限):
打开命令提示符(右键以管理员身份运行),执行以下命令:
assoc .py=Python.File ftype Python.File="C:\Windows\py.exe" "%1" %*
3. 确保shebang行格式正确
shebang行必须是脚本的第一行,格式如下:
- 指定Python 2:
#!python2或#!/usr/bin/env python2 - 指定Python 3:
#!python3或#!/usr/bin/env python3
4. 验证设置
创建两个测试脚本验证:
test2.py:
#!python2 import sys print("Running Python version:", sys.version) input("Press Enter to exit...")
test3.py:
#!python3 import sys print("Running Python version:", sys.version) input("Press Enter to exit...")
双击这两个文件,应该分别启动Python 2.7和Python 3.10并输出对应版本信息。
补充说明
如果之前手动将.py文件关联到了python2.exe或python.exe,必须改回py.exe——只有py.exe会读取shebang行并自动选择对应的Python版本,直接绑定到具体版本的可执行文件会忽略shebang设置。
内容的提问来源于stack exchange,提问作者Richard
相关产品推荐
相关产品推荐

