10
#!/usr/bin/env python

我把它放在脚本的顶部。我已经看到应该使脚本可以从命令行运行,而无需python programname.py. 除非我有误解programname.py,只要我在脚本顶部有上述行,我就应该可以使用。这个对吗?

它对我不起作用,我只是收到一个错误,表明我必须python在“通话”开始时使用。

4

2 回答 2

24

Python脚本的通用运行

你几乎可以在没有 shebang ( #!) 的情况下普遍运行

python myscript.py

或几乎等效(它将当前目录放在您的路径上并执行名为 的模块myscript(最好这样做!)

python -m myscript

从命令行,只要您安装了 Python 并且在路径环境变量上(即设置为使用 运行python,如果已安装,通常就是这种情况)。

Shebangs ( #!) 是 Unix 的东西。

当您使用它时,shebang 通常用于在 Unix 平台(通常是 Apple 或 Linux)上运行。Windows 通常需要 cygwin 才能使用 shebang。

您通常可以默认使用系统路径上可用的任何 python:

#!/usr/bin/env python

假设您使用的是 Unix,您可能会尝试其他位置进行 python 设置,例如:

#!/usr/bin/python

蒙混过关

您可以使用 unixwhich命令查看当前正在使用的 python,因此,如果您想查看 python 的来源,请使用以下命令:

which python

或在 Windows 上(cygwin 可能可以运行 shebang):

where python

在 Linux/Unix 上,您也需要执行权限才能以这种方式运行文件。使用 chmod

chmod +x myscript.py

(chmod 也可能适用于 Windows 中的 Cygwin)

如果您不是以 root 身份运行,则可能需要sudo,那将是

sudo chmod +x myscript.py

然后尝试运行(在同一目录中)

./myscript.py 
于 2013-12-01T22:53:33.327 回答
6

使文件可执行

sudo chmod +x /path/to/file.py

然后从与 file.py 相同的目录中:

./file.py
于 2013-12-01T23:06:10.153 回答