gpt4 book ai didi

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

转载 作者:IT老高 更新时间:2023-10-28 21:36:34 29 4
gpt4 key购买 nike

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

#!/usr/bin/env python

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

env: python\r: No such file or directory

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

最佳答案

vimvi 中打开文件,然后执行以下命令:

:set ff=unix

保存并退出:

:wq

完成!

说明

ff 代表 file format ,并且可以接受unix (\n)、dos (\r\n)的值>) 和 mac (\r) (仅用于 intel 之前的 mac,在现代 mac 上使用 unix).

要了解有关 ff 命令的更多信息:

:help ff

:wq 代表 Write 和 Quit,更快的等价物是 Shift+ zz(即按住Shift然后按z两次)。

这两个命令都必须在 command mode 中使用.

用于多个文件

不必在 vim 中实际打开文件。可以直接从命令行进行修改:

 vi +':wq ++ff=unix' file_with_dos_linebreaks.py

处理多个 *.py 文件(在 bash 中):

for file in *.py ; do
vi +':w ++ff=unix' +':q' "${file}"
done

😱 offtopic: if by chance you are stuck in vim and need to exit, here are some easy ways.

删除 BOM标记

有时即使在设置了 unix 行结束符之后,运行文件时仍然可能会出错,尤其是当文件是可执行文件并且具有 shebang 时。 .该脚本可能有一个 BOM 标记(例如 0xEFBBBF 或其他),这会使 shebang 无效并导致 shell 提示。在这些情况下,python myscript.py 可以正常工作(因为 python 可以 处理 BOM),但 ./myscript.py 会失败,即使使用由于您的 shell(sh、bash、zsh 等)无法处理 BOM 标记,因此设置了执行位。 (通常是像 Notepad 这样的 Windows 编辑器创建带有 BOM 标记的文件。)

可以通过在 vim 中打开文件并执行以下命令来删除 BOM:

:set nobomb

关于python - env: python\r: 没有这样的文件或目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19425857/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com