微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

更改我的python路径:helloworld.py返回未找到的命令-

如何解决更改我的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 举报,一经查实,本站将立刻删除。