【发布时间】:2017-11-17 06:26:22
【问题描述】:
我在公司 UNIX SUSE 计算机的用户目录中有一个自行安装的 python(无 sudo 权限):
which python
<user>/bin/python/Python-3.6.1/python
我有一个可执行 (chmod 777) sample.py 文件,文件顶部有这一行:
#!<user>/bin/python/Python-3.6.1/python
我可以这样执行文件:
python sample.py
但是当我自己运行它时,我得到一个错误:
/full/path/sample.py
/full/path/sample.py: Command not found
我不知道为什么它不起作用。我很困惑,因为文件是可执行的,python 路径是正确的,并且如果我在前面放一个 python 命令,文件就会执行。我错过了什么?
编辑: 我试着把它放在文件的顶部:
#!/usr/bin/env python
现在,我收到此错误:
: No such file or directory
我试过这个以确保我的环境是正确的
which env
/usr/bin/env
编辑2:
是的,我可以使用 shebang 命令很好地运行脚本,如下所示:
<user>/bin/python/Python-3.6.1/python /full/path/sample.py
【问题讨论】:
-
不是解决问题的方法,但
chmod 777(几乎)永远不是正确的做法。仅设置您实际需要的权限。在这种情况下,这很可能是755(你读/写/执行,其他人读/执行) -
您是否检查过是否可以使用您提供的路径运行脚本?代替
python sample.py,你能运行/the/full/path/from/shbang sample.py吗?如果是,那么问题可能出在第一行的格式上。如果不是,那么要么你指向了错误的 python 二进制文件,要么 python 安装被破坏了。 -
@viraptor,是的,我可以使用 shebang 的路径运行脚本,我还将它添加到我上面的编辑中。格式正确,我仔细检查了,python 安装不能被破坏,因为我可以使用'python'命令和'/path/from/shebang/'命令运行脚本。
-
任何需要在路径中引用的空格或字符?
-
@BorkoJandras,路径基本上是这样的:
/abc/xyz/disks/ab.xyz.123/myname/bin/python/Python-3.6.1/python。我看到的唯一奇怪的是句号和连字符。 python文件的全路径也和这个很相似。