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

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

我正在尝试使用 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.

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

: No such file or directory.

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

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

答案1

询问Ubuntu,回答由吉尔斯:

如果您看到错误“:没有这样的文件或目录”(冒号之前没有任何内容),则意味着您的 shebang 行末尾有一个回车符,可能是因为它是在 Windows 下编辑的(使用 CR,LF 作为行分隔符)。在 shell 打印消息的开头之后,CR 字符会导致光标移回行首,因此您只能看到 CR 后面的部分,该部分结束了作为错误消息一部分的解释器字符串。

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

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

须藤 dos2unix /usr/local/bin/casperjs

或 sed:

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

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

相关内容