2017-06-14 19 views
0

我在企业UNIX SUSE电脑我的用户目录(没有sudo的特权)有一个自行安装的Python:与家当路径可执行.py文件

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

我尝试这样做,以确保我的ENV是正确的

which env /usr/bin/env

EDIT2: 是的,我可以用家当命令像这样运行脚本罚款: <user>/bin/python/Python-3.6.1/python /full/path/sample.py

+0

不是问题的解决方案,但'chmod 777'(几乎)从来都不是正确的做法。只设置您实际需要的权限。在这种情况下,最有可能的是'755'(你可以读/写/执行,其他人可以读/执行) – viraptor

+0

你是否检查过可以使用你提供的路径运行脚本?而不是'python sample.py',你可以运行'/ the/full/path/from/shbang sample.py'吗?如果是,那么问题可能与第一行的格式有关。如果不是,那么你要么指向错误的python二进制文件,要么python安装被破坏。 – viraptor

+0

@viraptor,是的,我可以使用shebang的路径运行脚本,我也将它添加到上面的编辑中。格式是正确的,我仔细检查,并且python安装不能被破坏,因为我可以使用'python'命令和'/ path/from/shebang /'命令运行脚本。 – rrlamichhane

回答

1

你的文件有DOS行尾(CR + LF)。如果您运行python sample.py,它将正常工作,但如果运行./sample.py则不起作用。重新编码文件,使其具有Unix行尾(每行末尾都有纯LF)。

+0

你是一个救星。而已。可恶!我运行了'dos2unix sample.py',现在运行正常。非常感谢! – rrlamichhane

0

尝试使用#!/usr/bin/env pythonthis post描述。让操作系统完成这项工作。

+0

感谢您的回复。我尝试过,但它不起作用。请看我的编辑更多细节。 – rrlamichhane