运行 Python 脚本而不显式调用 `python`

use*_*084 50 linux python

我正在使用 Debian Linux。

我想知道是否有一种方法可以通过键入(而不是)来配置以在终端中运行所有Python 脚本。script.pypython script.py

Pau*_*aul 66

您需要做两件事:

现在你可以输入:

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

如果脚本在您的当前目录中,或者:

    script.py
Run Code Online (Sandbox Code Playgroud)

如果脚本的位置恰好在您的 PATH 中,或者:

    path/to/script.py
Run Code Online (Sandbox Code Playgroud)

除此以外。

  • 通常使用`#!/usr/bin/env python` 是一个更好的主意,以防用户有本地构建的python(例如,在`/usr/local/bin` 中)他们宁愿运行脚本和。 (35认同)
  • @sapi 根据 Debian 的说法,至少在他们的开发政策中不是。如果您正在编写自己的脚本,您当然可以接受风险,最好是明确的。如果您想要本地的,请在shebang中选择它。 (4认同)
  • 执行时读取文件的不是`bash`... (3认同)

Gau*_*eph 34

在 linux 下,您可以简单地使用 hashbang(又名 shebang)。添加行

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

如果你想执行默认的python解释器。

#!/path/to/python[x.x]
Run Code Online (Sandbox Code Playgroud)

使用某些特定版本,或

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

如果您希望环境为您找到python。

您还需要使脚本可执行

chmod +x script[.py] 
Run Code Online (Sandbox Code Playgroud)


Cor*_*ein 5

用:

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

这将确保用户期望使用的 python 将是运行脚本的那个。如果用户使用 virtualenv 在给定环境中拥有特定版本的 python,这一点尤其重要。