终端中的Python

终端中的Python,python,macos,terminal,Python,Macos,Terminal,这个问题涉及在终端中运行未存储在主目录中的python文件。我想我已经解决了这个难题的第一点,修改了路径,使之包括存储python程序的目录 那么最初在哪里呢 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程序的目录

那么最初在哪里呢
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文件都不会运行。例如,当我打开terminal并键入时,其中有一个名为repap.py的文件:
python repap.py
我得到:

如果我只需键入
recap.py
(即省略“python”位),我会得到:
-bash:/Users/paulpatterson/Documents/Python/repap.py:权限被拒绝

谁能启发我?理想情况下,我希望设置它,以便终端一打开,我所需要做的就是键入文件名,而不是键入python

我花了好几个小时试图解决这个问题,非常感谢您的帮助


Paul.

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

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


简而言之,您需要包括
#/usr/bin/env python
作为第一行,chmod将文件设置为可执行文件(
chmod u+x recap.py
)。

您以前可能尝试过这一点,但我在某一点上遇到了类似的问题,这是适合我的过程。在存储repap.py的目录中:

chmod +x recap.py
./recap.py
/是关键部分,因为它是目录的完整路径。这也假设您已经

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

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

which python
在终端,它应该打印python安装的路径。然后,您可以在shebang之后使用该路径。

键入:

which python 
进入终端,这将为您提供python的路径。按照其他人的建议,将其置于脚本之上:

#! /path/to/python
还要确保它是可执行的(整个chmod内容)。您可以通过键入以下内容进行检查:

ls -l
which python
然后,该文件旁边应该有类似-rwx-r--r的内容。x表示它是可执行的

尝试键入:

which env
找出env在系统上的路径。更改shebang路径以匹配使用which命令找到的env命令的完整路径。 如果失败了。这意味着您没有安装env,或者env安装在系统路径中。尝试通过键入以下内容指定python可执行文件的完整路径,而不是使用env:

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

#!/path/to/python

其他回复者对您最初的问题做得很好,但我认为您最好实际学习如何使用命令行,因为您的回复表明您还不熟悉它。我总是推荐。这是一个非常棒的指南,可以让您轻松地使用它。

几年后,我不知道这对您有多有用,但我一直在努力解决一个非常类似的问题。我正在使用Python IDLE将代码保存为.py文件。当我试图在终端中运行它时,我在第一行中不断得到一个语法错误。我的第一行代码是

#/usr/bin/env python
但是解释器读取我的第一行代码作为IDLE的shell描述”(Python w.7.5(v2.75:ab05e7dd2788…等等).我要做的就是删除所有这些行,包括第一行
>
,以便终端打开我的文件。因此,我删除了所有无用的位置作为其第一行,瞧!它工作了。以下是我如何让它在终端中工作一次的:

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

就这样!

感谢您的快速响应。我已经在文件顶部添加了建议行,但是当我尝试chmod时,我得到了:chmod:recap.py:没有这样的文件或目录,所以仍然无法运行脚本如果您运行
chmod+x file.py
,那么
file.py
需要在当前工作目录中,或者您需要指定ful文件的l路径.chmod不会在整个文件系统中搜索随机文件.py并对其进行chmod。@Paul Patterson,您需要更改到包含file.py的目录,或者首先提供chmod的完整路径。“cd/Users/paulpatterson/Documents/Python/”,或者执行“chmod+x/Users/paulpatterson/Documents/Python/file.py”好的,我已经使用:chmod u+x/Users/paulpatterson/Documents/Python/repap.py指定了完整路径。现在找到了文件,但没有正确执行;终端显示以下内容:/Users/paulpatterson/Documents/Python/repap.py:line 1:#!/usr/bin/env:没有这样的文件或目录/Users/paulpatterson/Documents/Python/repap.py:line 3:syntax-error接近意外标记
(“/Users/paulpatterson/Documents/Python/recap.py:第3行:
start_num=int(原始输入(“您希望开始计数的数字是多少?”)”),因此提示了很多错误,但f