代码之家  ›  专栏  ›  技术社区  ›  Paul Patterson

终端中的Python

  •  2
  • Paul Patterson  · 技术社区  · 16 年前

    那么最初在哪里 echo $PATH 将产生以下结果: /usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin

    /usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin:/Users/paulpatterson/Documents/Python

    但是,尽管正确的文件夹现在在我的路径中,但此文件夹中的python文件都不会运行。例如,当我打开终端并键入时,其中有一个名为recap.py的文件: python recap.py 我得到:

    python: can't open file 'recap.py': [Errno 2] No such file or directory
    

    recap.py (即省略“python”位),我得到: -bash: /Users/paulpatterson/Documents/Python/recap.py: Permission denied

    有人能开导我吗?理想情况下,我想设置它,所以一旦终端打开,我需要做的就是键入文件名,甚至不键入python。

    保罗。

    7 回复  |  直到 16 年前
        1
  •  8
  •   dreeves    16 年前

    在$PATH中包含命令所在的目录意味着您可以从任何地方运行该目录中的命令。但是在您的第一个示例中,您正在运行命令“python”,并使用recap.py作为参数。因此,shell不会搜索$PATH以找到recap.py所在的位置。要使recap.py单独作为命令运行,请参见以下内容:

    http://en.wikipedia.org/wiki/Shebang_(Unix)

    简而言之,你需要包括 #!/usr/bin/env python 作为第一行,chmod要执行的文件( chmod u+x recap.py ).

        2
  •  3
  •   Wilduck    16 年前

    你以前可能试过这个,但我也遇到过类似的问题,这是一个适合我的过程。在存储recap.py的目录中:

    chmod +x recap.py
    ./recap.py
    

    ./是关键部分,因为它是目录的完整路径。这也假设你有

    #!/usr/bin/env python
    

    或者类似于你程序的第一行。第一行的前两个字符称为 shebang 并指示该文件是由其后面的路径指定的解释器执行的脚本。因此,正如其他人所建议的,您的python解释器可能位于/usr/bin(可能在/bin中)之外的某个位置,因此您需要找到它,并在您希望从终端执行的任何python脚本的顶部包含这一行。

    如果不知道python的位置,可以使用:

    which python
    

        3
  •  1
  •   mikerobi    16 年前

    确保每个脚本的第一行是“#”/usr/bin/env python“(无qoutes)。对每个文件执行“chmod+x file.py”。然后您应该能够以file.py的形式运行每个脚本。

        4
  •  1
  •   Paul    16 年前

    which python 
    

    进入终端,这将为您提供到python的路径。像其他人建议的那样,把它放在你的剧本上面:

    #! /path/to/python
    

    还要确保它是可执行的(chmod的全部内容)。您可以通过键入以下内容进行检查:

    ls -l
    

    文件的旁边应该有-rwx-r--r--这样的内容。x表示它是可执行的。

        5
  •  1
  •   Daenyth    16 年前

    其他的回复者对你最初的问题做得很好,但是我认为你应该学习如何使用命令行,因为你的回复表明你还不熟悉它。我总是推荐 this . 这是一个奇妙的指南,会让你舒适地使用它。

        6
  •  0
  •   freegnu    16 年前

    尝试键入:

    which env
    

    找出env在系统中的路径。更改shebang路径以匹配使用which命令找到的env命令的完整路径。

    which python
    

    使用完整路径返回代替/path/to/env python shebang。recap.py的第一行应该如下所示:

    #!/path/to/python
    
        7
  •  0
  •   Joshua Taylor    12 年前

    我不知道这对你有多大的帮助,因为几年后的今天,但我已经为一个非常类似的问题奋斗了一个小时了。我正在使用Python IDLE将代码保存为.py文件。当我试图在终端中运行它时,我在第一行中不断地得到一个语法错误。我的第一行代码是

    #!/usr/bin/env python
    

    但是解释器在读我的第一行“IDLE的shell描述”(pythonw.7.5(v2.75:ab05e7dd2788。。。等等,等等)。我要做的是删除所有这些行,包括第一行 >>>

    cd /directory/where/you/have/your/file
    chmod +x filename.py
    python filename.py
    

    就这样!