Mas*_*sic 5 python windows shebang
我正在尝试从命令行作为Windows上的命令运行Python脚本-因此不使用“ Python”或“ .py”。如果我的脚本名为“ testing.py”,则我试图将此名称设置为命令并从命令行调用“ testing”。
浏览文档似乎#!/usr/bin/env python只要我在PATH中有Python,就需要使用此shebang 。
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中具有正确的路径,我应该能够通过“测试”来唤起我的Python脚本。但是,如果不添加“ .py”,我似乎无法使脚本运行。
@AKX 接受的答案对于 Windows 10 标准 Python 3 是不正确的,当然在最新的 Windows 10 (1903) 中,如果不是更早的话。
(注意:我不能说这在 WSL 下如何工作。)
我安装了多个版本的 Python(2.7、3.6、3.7 和最近的 Python 3.8b1)。我#!/usr/bin/env多年来一直在我的脚本中使用shebang 来实现跨平台兼容性(通常是为了区分 Py2 和 Py3 脚本)。
我在文件夹 ( C:\so_test\awtest.py) 中创建了一个小脚本:
#!/usr/bin/env python3.6
import sys
print(sys.version)
Run Code Online (Sandbox Code Playgroud)
如果我用它运行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在您正在测试的命令窗口中,或在主环境变量中(如果您执行后者,则需要重新启动命令窗口)),我可以更改为不同的目录并运行awtest或awtest.py它们仍然有效并引用路径中的文件夹。如果我从路径中删除脚本文件夹,则不再找到这些文件。
虽然我不一定希望这能在 10 或 Python 2.7 之前的 Windows 上运行,但此功能似乎是未来发展的方向。
不,Windows 不支持 shebang 线。
您链接的文档与pyPython 安装的启动器相关,它可以解释各种 shebang 行以选择用于运行脚本的 Python 版本。
setuptools能够为您的 Python 脚本生成包装器 .exe,但它会涉及一些内容,并且已经假设您有一个带有 asetup.py的包等等。
在本地,如果您真的非常需要这个,您可能可以添加.py到PATHEXT环境变量,以便 Windows 命令行查找.pys 就像查找.exes (以及其他各种;当前的现代默认值是.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC)。但是,这自然无法扩展以分发应用程序,因为所有用户也需要进行设置。
我的建议是坚持那些无聊的老东西python testing.py,真的。
| 归档时间: |
|
| 查看次数: |
2297 次 |
| 最近记录: |