明确使用python解释器不会忽略shebang

问题描述 投票:0回答:1

我已经阅读了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)]
python python-3.x shebang
1个回答
0
投票

py
不是 Python 解释器,它是 Windows Python 启动器,因此您提供的链接不适用。

Windows 启动器

py
支持 shebang 语法,如 PEP 397 中指定:

启动器支持 [1] 中描述的 shebang 行语法,包括列出的所有限制。

© www.soinside.com 2019 - 2024. All rights reserved.