我已经阅读了shebang会覆盖python解释器路径吗,似乎给定的答案不适用于我。
一些背景:我在 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
已经创建了一个虚拟Python文件
shebang.py
来打印出使用的Python版本
#!/usr/bin/env python3
import sys
print(sys. version)
$ py shebang.py
3.9.10 (heads/mingw-v3.9.10-dirty:12d1cb5b7c, Dec 9 2022, 03:24:49) [GCC UCRT 12.2.0 64 bit (AMD64)]
看起来使用了
python3
而不是 py
。如果我打电话 ./shebang.py
. 也会有同样的行为
如何确保使用
py
?
编辑(@wRAR 评论):
当我从
shebang.py
中删除 shebang 线时,我确实可以使用 py
$ py shebang.py
3.10.11 (tags/v3.10.11:7d4cc5a, Apr 5 2023, 00:38:17) [MSC v.1929 64 bit (AMD64)]
py
不是 Python 解释器,它是 Windows Python 启动器,因此您提供的链接不适用。
Windows 启动器
py
支持 shebang 语法,如 PEP 397 中指定:
启动器支持 [1] 中描述的 shebang 行语法,包括列出的所有限制。