没有这样的文件或目录,但我可以看到它!

reg*_*gie 11 ls python executable newlines shebang

我正在尝试使用 winSCP 在无头 Raspberry PI 上运行 python 脚本并收到以下错误消息:

Command '"./areadetect_movie_21.py"'
failed with return code 127 and error message
/usr/bin/env: python
: No such file or directory.
Run Code Online (Sandbox Code Playgroud)

当我尝试从终端运行时,我得到:

: No such file or directory.
Run Code Online (Sandbox Code Playgroud)

我在同一个目录中尝试了一个类似的 python 脚本,使用相同的 python shebang、相同的权限并使用相同的用户 pi,它可以工作。

我也做了一个ls,我可以看到文件,所以我不知道为什么它不会运行。

Ark*_*zyk 28

AskUbuntu,由Gilles回答:

如果您看到错误“: No such file or directory”(冒号前没有任何内容),则表示您的 shebang 行末尾有回车,大概是因为它是在 Windows 下编辑的(使用 CR,LF 作为行分隔符)。CR 字符使光标在 shell 打印消息的开头后移回行的开头,因此您只能看到 CR 之后的部分,该部分结束了作为错误消息一部分的解释器字符串。

删除 CR:shebang 行需要有一个 Unix行结尾(仅换)。Python 本身允许 CRLF 行结尾,因此其他行上的 CR 字符不会受到伤害。另一方面,Shell 脚本必须不含 CR 字符。

要删除 Windows 行结尾,您可以使用dos2unix

须藤 dos2unix /usr/local/bin/casperjs

或 sed:

须藤 sed -i -e 's/\r$//' /usr/local/bin/casperjs

如果您必须在 Windows 下编辑脚本,请使用能够处理 Unix 行尾的编辑器(即比记事本更少脑残的东西),并确保在编辑 Unix 文件时将其配置为写入 Unix 行尾(即仅 LF)。