这个问题涉及在终端中运行未存储在主目录中的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文件运行。例如,当我打开终端并键入时,其中有一个名为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。
我花了好几个小时试图解决这个问题,感谢任何帮助。
保罗。
答案 0 :(得分:8)
包含命令在$ 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
)。
答案 1 :(得分:3)
您之前可能已经尝试过这种方法,但我在某个方面遇到了类似的问题,这是适合我的过程。在存储recap.py的目录中:
chmod +x recap.py
./recap.py
./是关键部分,因为它作为目录的完整路径。这也假设你有
#!/usr/bin/env python
或类似于程序第一行的内容。前两个字符的第一行称为shebang,表示该文件是由其后面的路径指定的解释器执行的脚本。所以,正如其他人所建议的那样,你的python解释器可能位于/ usr / bin以外的某个地方(可能在/ bin中),所以你需要找到它,并在你想要的任何python脚本的顶部包含这一行。从终端执行。
如果您不知道python的位置,可以使用:
which python
在终端,它应该打印你的python安装的路径。然后,您可以在shebang之后使用该路径。
答案 2 :(得分:1)
确保每个脚本中的第一行是“#!/ usr / bin / env python”(无qoutes)。为每个文件执行“chmod + x file.py”。然后,您应该能够将每个脚本作为file.py运行。
答案 3 :(得分:1)
输入:
which python
进入终端,那应该是你的python路径。将其放在脚本之上,正如其他人所建议的那样:
#! /path/to/python
还要确保它是可执行的(整个chmod的东西)。您可以通过输入以下内容来检查:
ls -l
该文件应该在它旁边有-rwx-r - r--之类的东西。 x表示它是可执行的。
答案 4 :(得分:1)
其他响应者在您的初始问题上做得很好,但我认为您可以很好地学习如何使用命令行,因为您的回复表明您还不熟悉它。我总是推荐this。这是一个很棒的指南,可以让你舒服地使用它。
答案 5 :(得分:0)
尝试输入:
which env
找出env在您系统上的路径。更改shebang路径以匹配使用which命令找到的env命令的完整路径。 如果失败了这意味着您要么没有安装env,要么在系统路径中安装了env。尝试通过键入:
指定python可执行文件的完整路径,而不是使用envwhich python
使用完整路径返回代替/ path / to / env python shebang。你的recap.py的第一行应该是这样的:
#!/path/to/python
答案 6 :(得分:0)
我不知道这对你来说现在看起来有多么有用,因为几年之后,但我现在一直在努力解决一个非常类似的问题。我使用Python IDLE将我的代码保存为.py文件。当我试图在终端中运行它时,我在第一行中遇到语法错误。我的第一行代码是
#!/usr/bin/env python
但解释器正在阅读我的第一行作为IDLE的shell描述“(Python w.7.5(v2.75:ab05e7dd2788 ......等等)”。我要做的就是删除所有这些行,包括第一个>>>
,以便终端打开我的文件。所以我删除了IDLE所有的废话作为它的第一行和vo!它工作。这是我如何让它在终端工作一次:
cd /directory/where/you/have/your/file
chmod +x filename.py
python filename.py
就是这样!