Windows Git Bash中如何让py解释器优先执行带shebang的Python脚本?
问题:Windows Git Bash下让带shebang的Python脚本优先使用py解释器
环境与现象
Windows系统使用C:\Program Files\Git\bin\bash.exe,已安装两个Python版本:
$ py --version Python 3.10.11 $ which py /c/Users/Username/AppData/Local/Programs/Python/Launcher/py $ python3 --version Python 3.9.10 $ which python3 /c/ProgramData/chocolatey/bin/python3
测试脚本shebang.py内容:
#!/usr/bin/env python3 import sys print(sys.version)
执行py shebang.py或./shebang.py时,输出Python 3.9.10(实际调用python3解释器);移除shebang行后,py shebang.py会使用Python 3.10.11(py解释器)。
解决方案
1. 修改shebang直接指向py启动器
这是最直接可靠的方法,将脚本的shebang行替换为:
#!/usr/bin/env py
如果担心env无法找到py,可以写绝对路径确保准确:
#!/c/Users/Username/AppData/Local/Programs/Python/Launcher/py
这样无论用./shebang.py还是py shebang.py执行,都会调用py启动器,默认使用3.10版本。如果需要指定特定版本,还可以写成:
#!/usr/bin/env py -3.10
2. 给python3设置别名指向py启动器
在Git Bash的配置文件~/.bashrc中添加别名:
alias python3='py'
保存后重启Git Bash,此时#!/usr/bin/env python3会调用py启动器。注意这种方法仅对当前用户的Git Bash生效,若有其他脚本依赖python3为3.9版本,可能引发冲突。
3. 调整PATH优先级+重命名py启动器(可选)
把py启动器所在目录/c/Users/Username/AppData/Local/Programs/Python/Launcher/移到PATH环境变量最前端,然后将该目录下的py.exe复制并重命名为python3.exe。这样#!/usr/bin/env python3会优先找到这个python3.exe(即py启动器)。不过这种方法可能影响其他依赖python3的工具,需谨慎操作。
内容的提问来源于stack exchange,提问作者coincoin
相关产品推荐
相关产品推荐

