env:python\r:没有这样的文件或目录

Nik*_*s R 43 python macos env shebang osx-mountain-lion

我的Python脚本beak包含以下shebang:

#!/usr/bin/env python
Run Code Online (Sandbox Code Playgroud)

当我运行脚本时$ ./beak,我得到了

env: python\r: No such file or directory
Run Code Online (Sandbox Code Playgroud)

我之前从存储库中提取了此脚本.这可能是什么原因?

ccp*_*zza 45

在vim或vi中打开文件,并管理以下命令:

:set ff=unix
Run Code Online (Sandbox Code Playgroud)

保存并退出:

:wq
Run Code Online (Sandbox Code Playgroud)

完成!

说明

ff代表文件格式,并且可以接受unix(\n),dos(\r\n)和mac(\r)的值(仅用于预先的英特尔mac,在现代的mac上使用unix)..

要阅读有关该ff命令的更多信息:

:help ff
Run Code Online (Sandbox Code Playgroud)

:wq代表W rite和Q uit,更快的等价是Shift+ zz(即按住Shift然后按z两次).

必须在命令模式下使用这两个命令.

用于多个文件

没有必要在vim中实际打开文件.可以直接从命令行进行修改:

 vi +':wq ++ff=unix' file_with_dos_linebreaks.py
Run Code Online (Sandbox Code Playgroud)

要处理多个*.py文件:

for file in *.py ; do
    vi +':w ++ff=unix' +':q' ${file}
done
Run Code Online (Sandbox Code Playgroud)

  • 在我的Ubuntu机器上通过`pip install pdfminer.six`安装的`pdf2txt.py`和`dumppdf.py`上使用它.现在错误已经消失,它们可以正常工作 (2认同)

fal*_*tru 33

该脚本包含CR字符.shell将这些CR字符解释为参数.

解决方案:使用以下脚本从脚本中删除CR字符.

with open('beak', 'rb+') as f:
    content = f.read()
    f.seek(0)
    f.write(content.replace(b'\r', b''))
    f.truncate()
Run Code Online (Sandbox Code Playgroud)

  • @NiklasR,见[截屏视频](http://asciinema.org/a/5973)我刚录制.错误消息略有不同,因为我在Linux机器上记录它. (3认同)
  • 而"CR"是指"回车"​​(ASCII 13). (2认同)
  • 我刚刚解决了这个问题。您当前的文件是“CR”类型或任何其他类型,因此您必须通过记事本++或任何编辑器打开该文件并将其转换为“LF”。Notepad++:编辑菜单 -> EOL Conversion -> Unix (LF),然后保存该图片:https://i.imgur.com/paAPYsK.png 希望对你们有用。 (2认同)

Ron*_*ndo 19

您可以将结尾的行转换为*nix友好的行

dos2unix beak
Run Code Online (Sandbox Code Playgroud)

  • 这对我有用.尝试运行〜/ leo-5.0/launchLeo.py打开Leo编辑器时出现此错误.为了让它工作,我必须首先使用Homebrew安装dos2unix,如下所示:`brew install dos2unix` (3认同)

小智 6

如果您使用 PyCharm,您可以通过将行分隔符设置为 LF 来轻松解决它。看我的截图。 如您所见,您可以将其设置在右下角