直接从命令行运行python脚本

con*_*sed 9 python bash shell env shebang

#!/usr/bin/env python
Run Code Online (Sandbox Code Playgroud)

我把它放在脚本的顶部.我已经看到,应该让脚本可以从命令行运行而不需要python programname.py.除非我误解,否则我应该可以使用programname.py,只要我在脚本顶部有上面的行.它是否正确?

这对我不起作用我只是得到一个错误,表明我必须python在'call'的开头使用它.

Aar*_*all 23

通用运行Python脚本

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

python myscript.py
Run Code Online (Sandbox Code Playgroud)

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

python -m myscript
Run Code Online (Sandbox Code Playgroud)

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

Shebangs(#!)是Unix的东西.

正如您所使用的那样,shebang通常用于在Unix平台(通常是Apple或Linux)上运行.Windows通常需要cygwin才能使用shebang.

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

#!/usr/bin/env python
Run Code Online (Sandbox Code Playgroud)

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

#!/usr/bin/python
Run Code Online (Sandbox Code Playgroud)

蜷缩在一起

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

which python
Run Code Online (Sandbox Code Playgroud)

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

where python
Run Code Online (Sandbox Code Playgroud)

在Linux/Unix上,你也需要执行perms来以这种方式运行文件.使用chmod

chmod +x myscript.py
Run Code Online (Sandbox Code Playgroud)

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

如果您没有以root用户身份运行,那么您可能需要sudo,而且可能需要

sudo chmod +x myscript.py
Run Code Online (Sandbox Code Playgroud)

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

./myscript.py 
Run Code Online (Sandbox Code Playgroud)


小智 6

使文件可执行

sudo chmod +x /path/to/file.py
Run Code Online (Sandbox Code Playgroud)

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

./file.py
Run Code Online (Sandbox Code Playgroud)