如何解决更改我的python路径:helloworld.py返回未找到的命令-
|| 对于这个令人尴尬的问题,我们道歉— 我正在使用MacBook Pro,雪豹和Python 2.7.1。尝试运行我的第一个脚本,所有教程的所有第一页都在嘲笑我: 让我开头:$ whereis python
/usr/bin/python
$ which python
/Library/Frameworks/Python.framework/Versions/2.7/bin/python
(这是我的问题吗?)
我在vim中将helloworld.py写到/ users / charles:
$ vim helloworld.py
#!/usr/bin/python
# Hello World Python Program
print \"Hello World!\";
尝试从终端运行时:
$ helloworld.py
-bash: helloworld.py: command not found
尝试从python运行时:
$ python
>>> helloworld.py
Traceback (most recent call last):
File :<stdin>\",line 1,in <module>
NameError: name \'helloworld\' is not defined
从dive Into Python(不确定是否相关):
$ python
>>> import sys,os
>>> print \'sys.argv[0] =\',sys.argv[0]
sys.argv[0]=
>>> pathname=os.path.dirname(sys.argv[0])
>>> print \'path=\',pathname
path=
>>> print \'full path=\',os.path.abspath(pathname)
full path= /Users/charles
我很迷惑!我是否需要更改我的路径之一才能找到我的脚本?
我绝对不是编程专家,实际上我发现您可以使用终端。
谢谢!
解决方法
要将Python模块或脚本转换为UNIX系统上的独立程序,您必须做两件事:
1.)确保脚本顶部有“ shebang”:
#!/usr/bin/python
2.)确保脚本文件是可执行的。这是使用ѭ6done命令完成的:
chmod +x /path/to/helloworld.py
“ 8”是脚本的标准文件路径。如果它在当前目录中,则可以省略路径。
% ls -l
total 0
drwxr-xr-x 2 jathan jathan 60 2011-04-13 15:28 ./
drwxrwxrwt 12 root root 6.5K 2011-04-13 15:28 ../
-rw-r--r-- 1 jathan jathan 0 2011-04-13 15:28 helloworld.py
它位于我的当前目录中,因此使其成为可执行文件!
% chmod +x helloworld.py
% ls -l
drwxr-xr-x 2 jathan jathan 60 2011-04-13 15:28 ./
drwxrwxrwt 12 root root 6.5K 2011-04-13 15:28 ../
-rwxr-xr-x 1 jathan jathan 0 2011-04-13 15:28 helloworld.py*
看到左侧的权限位中的“ x”吗?您完成了!现在我们可以运行它:
% ./helloworld.py
Hello World!
最后,切勿在Python中使用分号作为行尾。这不是必需的,而且很丑陋!
,让我们从收到的第一个错误开始。了解错误消息很重要。
-bash: helloworld.py: command not found
这表明helloworld.py不是可以执行的命令。要运行文件,您有两个选择:
使用python解释器运行它。 python helloworld.py
使文件可执行,然后直接运行。 ./helloworld.py
为了使文件在* nix环境中可执行,您必须更改其模式以允许执行。为此,请使用chmod命令(man chmod
了解更多信息)。
chmod +x helloworld.py
假设您位于包含helloworld.py文件的目录中。如果不是,请先在那里cd
,或使用完整路径。
ѭ18是必需的,因为它告诉shell运行位于此处的文件,而不是通过查看$PATH
。 “ 19”是可能的可执行位置的列表。当您尝试直接运行helloworld.py
时,shell会尝试在$PATH
中寻找它。您要运行本地文件,因此必须在其前面加上./
,这意味着\“ from here \”。
顺便说一句,请注意您的python脚本的第一行:
#!/usr/bin/python
这称为shebang行,告诉系统使用“ 25”可执行文件加载文件。在内部,这意味着程序加载器将执行/user/bin/python helloworld.py
。
最后,当您不带任何参数调用python
时,您将进入交互式Python解释器会话。 environment28ѭ在此环境中未引用该名称的文件,它只是被解释为python代码。无效的python代码。这就是为什么您遇到第二个错误error29ѭ的原因。
,想加我的2美分:除了上面的权限和路径答案之外,还有另外一种情况,您可能仍然会遇到相同的错误。
尽管具有正确的权限和shebang标头,但如果您最初是在Windows中写入文件并将其复制到Linux上,则仍然可能会遇到相同的“找不到命令”错误。由于行尾字符不同,因此行上会有多余的\'\\ r \'字符。
发生这种情况是因为文件中有不可打印的字符。通过执行以下操作对其进行检查:
cat -v <filename>:
#!/usr/intel/bin/python^M
问题是多余的\“ ^ M \”。使用\'dos2unix \'转换文件,然后它将运行正常。
,就像其他人说的那样,您应该chmod + x您的文件以使其可执行,并且如果您不想将\“ ./ \”放入库本行中,则应将当前位置添加为系统路径:
export PATH=$PATH:.
,如果您已经在python中,则加载脚本的语法不是helloworld.py:
导入helloworld
要么
从helloworld导入*
仅当您以脚本作为命令行参数运行python时,才使用扩展名.py。
无需道歉,必须从某个地方开始,当您遇到基本语法问题时,错误消息可能会变得晦涩难懂。
确保终端的当前工作目录位于.py文件所在的位置。
,编辑:
尝试在命令行上执行/usr/bin/python helloworld.py
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。