【问题标题】:Executable .py file with shebang path to which python gives error, command not foundpython给出错误的shebang路径的可执行.py文件,找不到命令
【发布时间】:2017-11-17 06:26:22
【问题描述】:

我在公司 UNIX SUSE 计算机的用户目录中有一个自行安装的 python(无 sudo 权限):

which python <user>/bin/python/Python-3.6.1/python

我有一个可执行 (chmod 777) sample.py 文件,文件顶部有这一行:

#!&lt;user&gt;/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 命令很好地运行脚本,如下所示: &lt;user&gt;/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文件的全路径也和这个很相似。

标签: python linux unix


【解决方案1】:

尝试使用#!/usr/bin/env python,如this post 中所述。让操作系统完成工作。

【讨论】:

  • 感谢您的回复。我试过了,但它不起作用。请查看我的编辑以获取更多详细信息。
【解决方案2】:

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

【讨论】:

  • 你是救生员。而已。可恶!我跑了dos2unix sample.py,现在它运行良好。非常感谢!
猜你喜欢
  • 2017-12-13
  • 2020-01-26
  • 2012-08-18
  • 1970-01-01
  • 2017-02-26
  • 2017-07-03
  • 1970-01-01
  • 2011-07-10
  • 2021-08-28
相关资源
最近更新 更多