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


39

我正在使用Debian Linux。

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

Answers:


58

您需要做两件事:

  • 确保文件是可执行文件: chmod +x script.py
  • 使用shebang可以让内核知道要使用的解释器。脚本的第一行应显示为:

    #!/usr/bin/python
    

    假设您的脚本将使用默认的python运行。如果需要特定版本,只需在shebang中指定:

    #!/usr/bin/python2.7
    

现在您可以输入:

    ./script.py

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

    script.py

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

    path/to/script.py

除此以外。


32
通常,最好使用#!/usr/bin/env python,以防用户拥有本地python版本(例如in /usr/local/bin),而他们更希望使用该脚本运行脚本。
sapi 2014年

3
@sapi至少在他们的开发政策中,根据Debian的说法并非如此。如果您正在编写自己的脚本,则当然可以接受这种风险,最好明确一点。如果您想要本地的,请在shebang中选择它。
保罗

3
bash执行时不是读取文件...
unperson325680

@progo这是正确的-请注意,如果您看到自己认为将从改进中受益的答案,请继续进行编辑,则总是欢迎改进
Paul

而你所要做的./script.py,不是script.py
保罗·德雷珀

33

在Linux下,您可以简单地使用hashbang(aka shebang)。添加行

#!/usr/bin/python

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

#!/path/to/python[x.x]

使用某些特定版本,或

#!/usr/bin/env python

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

您还需要使脚本可执行

chmod +x script[.py] 

2

使用:

#!/usr/bin/env python

这样可以确保用户期望使用的python是运行脚本的python。如果用户使用virtualenv在给定环境中具有特定版本的python,则这尤其重要。


0

在脚本顶部使用shebang行,如下所示:

!/ usr / bin / python

更新要在其上执行脚本的python版本。例如对于python 3.6

!/usr/bin/python3.6

用于默认解释器

!/ usr / bin / python

注意:确保脚本具有可执行权限。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.