我正在尝试在Windows上作为命令从命令行运行Python脚本-因此不使用“ Python”或“ .py”。如果我的脚本名为“ testing.py”,则尝试将其命名为命令并从命令行调用“ testing”。
遍历文档似乎只要我的PATH中有Python,就需要使用该shebang #!/usr/bin/env 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中具有正确的路径,我应该能够通过“测试”来唤起我的Python脚本。但是,如果不添加“ .py”,我似乎无法运行脚本。
答案 0 :(得分:2)
否,Windows不支持shebang行。
您链接的文档与Python安装的py
启动器相关,该启动器可以解释各种shebang行以选择运行脚本的Python版本。
setuptools
能够为您的Python脚本but it gets a little involved生成包装器.exe,并且已经假定您拥有一个带有setup.py
的程序包,依此类推。
在本地,如果确实确实需要,则可以将.py
添加到PATHEXT
environment variable,因此Windows命令行查找.py
看起来像.exe
(以及其他各种字符;当前的现代默认值为.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC
)。但是,这自然不会扩展到分发应用程序,因为您的所有用户也需要进行设置。
我的建议是,确实坚持那种无聊的旧python testing.py
。
答案 1 :(得分:2)
@AKX接受的答案在Windows 10上是错误的,如果不是更早版本,则肯定是在最新的Windows 10(1903)中。
我安装了多个版本的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)
如果我使用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
,它们仍然可以工作并引用路径中的文件夹。如果我从路径中删除脚本文件夹,将不再找到这些文件。
虽然我不一定希望它可以在Windows 10或Python 2.7之前的版本上运行,但这种功能似乎是前进的方式。
答案 2 :(得分:1)
您可以在Windows中使用shebang,方法是将解释器的路径设置为文件的第一行(您将在VSCode上看到一个标记,该标记在该行上显示“设置为解释器”)。 使用Windows 10,Python版本3.9参见示例:
#!C:/Users/waithira/AppData/Local/Programs/Python/Python39/python.exe
print('hello world')
答案 3 :(得分:0)
如果您不打算经常这样做。您仍然可以将批处理文件添加到路径 testing.bat
中,其中包含执行代码所需的命令。
@echo off
python testing.py
这是一个无聊的解决方法,但它无需提及扩展即可工作,因为 Windows 解释批处理文件的方式与解释可执行文件的方式相同。