如何将 Python 代码作为脚本运行?

Bit*_*ria 4 python

我需要帮助在 ubuntu 中运行 python

我可以在终端中毫无问题地运行 python,但是当我创建一个.py文件时,我无法运行它。

Jac*_*ijm 12

它是如何工作的(例如 for python2, for python3,替换所有出现的pythonby python3):

  1. python /path/to/script.py
    • 如果文件是可执行的,则工作
    • #!/usr/bin/env python脚本头部的shebang ( ) 是一种很好的做法,但不是必需的
  2. /path/to/script.py
    • 如果脚本可执行,则工作
    • 需要shebang ( #!/usr/bin/env python)
  3. script.py
    • 如果脚本在$PATH 中有效
    • 脚本必须是可执行的
    • 文件名需要有扩展名
    • 需要shebang ( #!/usr/bin/env python)
  4. script
    • 如果脚本在$PATH 中有效
    • 脚本必须是可执行的
    • 文件名不应有扩展名
    • 需要shebang ( #!/usr/bin/env python)

更多信息:命令、shebang 或扩展的优先级?

shell 可以从两个来源(按优先顺序)获取有关如何运行脚本的信息:

  • 命令中的语言信息: python <script>
  • shebang,在脚本的第一行: #!/usr/bin/env python

然而,语言扩展并没有发挥作用(!)。

几个例子:

  1. 一个bash脚本,在命令正确的(语言)信息,不正确家当,不正确的扩展:

    #!/usr/bin/env python
    echo 'Monkey eats banana'
    
    Run Code Online (Sandbox Code Playgroud)

    跑了:

    $ sh /path/to/script.py
    > Monkey eats banana
    
    Run Code Online (Sandbox Code Playgroud)

    运行正确,命令中的信息优先于 shebang 和扩展名。

  2. 一个(可执行的)python脚本,以不正确的扩展名运行,但有一个正确的shebang:

    #!/usr/bin/env/python
    print "Monkey eats banana"
    
    Run Code Online (Sandbox Code Playgroud)

    跑了:

    $ /path/to/script.sh
    > Monkey eats banana
    
    Run Code Online (Sandbox Code Playgroud)

    正确运行,shebang 中的信息优先于扩展名。

  3. 一个(可执行)python脚本,具有正确的扩展名,但没有shebang(并且命令中没有语言信息):

    print "Monkey"
    
    Run Code Online (Sandbox Code Playgroud)

    运行命令:

    $ /path/to/script.py
    > Error: no such file "Monkey"
    
    Run Code Online (Sandbox Code Playgroud)

    尽管有语言扩展,但运行不正确!