使用 #!/usr/bin/env python3 shebang 和 Windows
using #!/usr/bin/env python3 shebang with Windows
我正在尝试 运行 来自命令行的 Python 脚本作为 Windows 上的命令——所以没有使用 "Python" 或“.py ”。如果我的脚本命名为 "testing.py",我试图将此名称变成命令并从命令行调用 "testing"。
通过文档看来我需要使用这个 shebang #!/usr/bin/env python
只要我的 PATH 中有 Python。
https://docs.python.org/3/using/windows.html#shebang-lines
我的 PATH 中也有脚本文件夹,所以类似
"testing.py" 目前正在使用命令行。
根据文档和本教程,
https://dbader.org/blog/how-to-make-command-line-commands-with-python
如果我在 PATH 和上面的 shebang 中有正确的路径,我应该能够通过 "testing" 调用我的 Python 脚本。但是,如果不添加“.py”,我似乎无法获得脚本 运行ning。
不,Windows 不支持 shebang 行。
您链接的文档与 Python 安装的 py
启动器有关,它可以解释各种 shebang 行以选择 Python 版本到 运行脚本与.
setuptools
能够为您的 Python 脚本生成包装器 .exe,but it gets a little involved 并且已经假设您有一个带有 setup.py
的包等等。
本地,如果你真的,真的需要这个,你可能可以将.py
添加到PATHEXT
environment variable,所以Windows命令line 查找 .py
s 就像它查找 .exe
s (以及其他各种;当前的现代默认值是 .COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC
)。但是,这自然不会扩展到分发应用程序,因为您的所有用户也需要设置它。
我的建议是坚持那种无聊的旧 python testing.py
,真的。
@AKX 接受的答案对于 Windows 10 标准 Python 3 是不正确的,如果不是更早的话,肯定是最新的 Windows 10 (1903)。
(注意:我不能说这在 WSL 下如何工作或不工作。)
我安装了多个 Python 版本(2.7、3.6、3.7,以及最近的 Python 3.8b1)。多年来,我一直在我的脚本中使用 #!/usr/bin/env
shebang 来实现 cross-platform 兼容性(通常用于区分 Py2 和 Py3 脚本)。
我在文件夹中创建了一个小脚本 (C:\so_test\awtest.py
):
#!/usr/bin/env python3.6
import sys
print(sys.version)
如果我 运行 使用 awtest.py
或只是 awtest
我得到 3.6.x
报告(显示它是 运行 Python 3.6)。如果我将 shebang 更改为引用 3.7,我会收到 3.7.x
报告。如果我将 shebang 更改为 #!/usr/bin/env python3
我会安装最新版本的 Python (3.8)。
现在,如果我将该文件夹添加到我的路径(path=%PATH%;C:\so_test
在您正在测试的命令 window 中,或者在主环境变量中(您将需要重新启动命令 window 如果你做后者的话)),我可以切换到不同的目录和 运行 awtest
或 awtest.py
它们仍然有效并引用路径中的文件夹。如果我从路径中删除脚本文件夹,将不再找到这些文件。
虽然我不一定希望它能在 10 或 Python 2.7 之前的 Windows 上运行,但此功能似乎是未来的方向。
您可以在 windows 中使用 shebang,方法是将解释器的路径设置为文件中的第一行(您会在 VSCode 上看到一个标记,上面写着 'set as interpreter '线)。
使用 windows 10,Python 版本 3.9 参见示例:
#!C:/Users/waithira/AppData/Local/Programs/Python/Python39/python.exe
print('hello world')
如果您不打算经常这样做。您仍然可以将批处理文件添加到您的路径 testing.bat
,其中包含执行代码所需的命令。
@echo off
python testing.py
这是一个无聊的解决方法,但无需提及扩展即可工作,因为 windows 解释批处理文件的方式与解释可执行文件的方式相同。
我正在尝试 运行 来自命令行的 Python 脚本作为 Windows 上的命令——所以没有使用 "Python" 或“.py ”。如果我的脚本命名为 "testing.py",我试图将此名称变成命令并从命令行调用 "testing"。
通过文档看来我需要使用这个 shebang #!/usr/bin/env python
只要我的 PATH 中有 Python。
https://docs.python.org/3/using/windows.html#shebang-lines
我的 PATH 中也有脚本文件夹,所以类似 "testing.py" 目前正在使用命令行。
根据文档和本教程, https://dbader.org/blog/how-to-make-command-line-commands-with-python
如果我在 PATH 和上面的 shebang 中有正确的路径,我应该能够通过 "testing" 调用我的 Python 脚本。但是,如果不添加“.py”,我似乎无法获得脚本 运行ning。
不,Windows 不支持 shebang 行。
您链接的文档与 Python 安装的 py
启动器有关,它可以解释各种 shebang 行以选择 Python 版本到 运行脚本与.
setuptools
能够为您的 Python 脚本生成包装器 .exe,but it gets a little involved 并且已经假设您有一个带有 setup.py
的包等等。
本地,如果你真的,真的需要这个,你可能可以将.py
添加到PATHEXT
environment variable,所以Windows命令line 查找 .py
s 就像它查找 .exe
s (以及其他各种;当前的现代默认值是 .COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC
)。但是,这自然不会扩展到分发应用程序,因为您的所有用户也需要设置它。
我的建议是坚持那种无聊的旧 python testing.py
,真的。
@AKX 接受的答案对于 Windows 10 标准 Python 3 是不正确的,如果不是更早的话,肯定是最新的 Windows 10 (1903)。
(注意:我不能说这在 WSL 下如何工作或不工作。)
我安装了多个 Python 版本(2.7、3.6、3.7,以及最近的 Python 3.8b1)。多年来,我一直在我的脚本中使用 #!/usr/bin/env
shebang 来实现 cross-platform 兼容性(通常用于区分 Py2 和 Py3 脚本)。
我在文件夹中创建了一个小脚本 (C:\so_test\awtest.py
):
#!/usr/bin/env python3.6
import sys
print(sys.version)
如果我 运行 使用 awtest.py
或只是 awtest
我得到 3.6.x
报告(显示它是 运行 Python 3.6)。如果我将 shebang 更改为引用 3.7,我会收到 3.7.x
报告。如果我将 shebang 更改为 #!/usr/bin/env python3
我会安装最新版本的 Python (3.8)。
现在,如果我将该文件夹添加到我的路径(path=%PATH%;C:\so_test
在您正在测试的命令 window 中,或者在主环境变量中(您将需要重新启动命令 window 如果你做后者的话)),我可以切换到不同的目录和 运行 awtest
或 awtest.py
它们仍然有效并引用路径中的文件夹。如果我从路径中删除脚本文件夹,将不再找到这些文件。
虽然我不一定希望它能在 10 或 Python 2.7 之前的 Windows 上运行,但此功能似乎是未来的方向。
您可以在 windows 中使用 shebang,方法是将解释器的路径设置为文件中的第一行(您会在 VSCode 上看到一个标记,上面写着 'set as interpreter '线)。 使用 windows 10,Python 版本 3.9 参见示例:
#!C:/Users/waithira/AppData/Local/Programs/Python/Python39/python.exe
print('hello world')
如果您不打算经常这样做。您仍然可以将批处理文件添加到您的路径 testing.bat
,其中包含执行代码所需的命令。
@echo off
python testing.py
这是一个无聊的解决方法,但无需提及扩展即可工作,因为 windows 解释批处理文件的方式与解释可执行文件的方式相同。