“/usr/bin/python^M:糟糕的解释器” [重复]

"/usr/bin/python^M: bad interpreter" [duplicate]

提问人:woozly 提问时间:4/2/2012 最后编辑:Henkewoozly 更新时间:10/14/2022 访问量:121075

问:

无法弄清楚,在 PyCharm 中在哪里更改 EOF。 我的脚本以:

#!/usr/bin/python
# -*- coding: utf-8 -*-

当我尝试像可执行文件()一样运行它时,它会输出如下内容:chmode +x

-bash: ./main.py: /usr/bin/python^M: bad interpreter: 没有这样的文件或目录

python pycharm 解释器 eof carriage-return

评论

4赞 avasal 4/2/2012
脚本中似乎有字符,请使用 dos2unix^M
0赞 dzNET 6/30/2018
似乎原始文件是在 MSDOS/Windows 中创建的,没有 UNIX/Linux 行尾支持。因此,当您尝试在 UNIX/Linux 上运行此文件时,您遇到了错误。最简单的方法是在 UNIX/Linux 上重新创建文件。可扩展的方法是将 MSDOS/Windows shell 配置为支持使用 UNIX/Linux 行尾进行保存。它可以帮助您在两个系统上创建和重用文件。

答:

55赞 mmmmmm 4/2/2012 #1

问题不在于 EOF,而在于 EOL。shell 看到 ^M 以及行尾,因此试图找到 ./usr/bin/python^M

进入此状态的常用方法是使用 MSDOS/Windows 编辑器编辑 python 文件,然后在 Unix 上运行。最简单的解决方法是在文件上运行 dos2unix,或者在明确允许使用 Unix 行尾保存的编辑器中编辑文件。

评论

0赞 jpic 4/2/2012
我认为 python 解释器根本没有运行。shebang 解释器在 ^M 上失败。
0赞 mmmmmm 4/2/2012
是的,对不起,shell 看到 ingthis
3赞 gsamaras 1/31/2016
如果您没有 dos2unix,只需在 Ubuntu 14.04 中执行即可。sudo apt-get install dos2unix
16赞 gefei 4/2/2012 #2

你可能想试试dos2unix <filename>

评论

1赞 ThinkBonobo 2/19/2015
小说在没有它的情况下安装了 centos。要安装 sudo yum,请安装 dos2unix。它在存储库中。
37赞 CrazyCoder 4/2/2012 #3

将行分隔符设置为 Unix

Unix

评论

3赞 ksaylor11 8/3/2016
如果文件已经保存,这似乎没有帮助。可能只有新文件?您需要将该工具用于这些文件。dos2unix
33赞 Jiangwei Yu 9/4/2013 #4

你可以在这里找到答案: ./configure : /bin/sh^M : 糟糕的解释器

作为 Mac OS X 用户,我没有找到命令 .或者,我使用 vi/vim:,然后保存文件dos2unix:set fileformat=unix:wq

2赞 vivi 11/5/2013 #5

只是一个格式问题 win 和 unix:

try 命令:dos2unix fileName

再次运行后,它应该可以工作

评论

0赞 mmmmmm 7/6/2016
这如何增加或改进其他答案?
3赞 SomeGuyOnAComputer 11/15/2013 #6

与Jiangwei Yu的帖子类似。在 UNIX/Linux 上,我使用 vi 来编辑 Python 文件。使用 vi,您可以在每行的末尾看到 ^M。

找到以下行/usr/bin/python^M

点击到达线路的尽头end

点击删除 ^Mdelete

要保存文件并退出,请键入::wq

这对我有用。

10赞 vatsa 1/27/2014 #7

安装 dos2unix: sudo apt-get install dos2unix

让它发挥魔力:dos2unix 文件名

6赞 FastSolutions 7/8/2014 #8

对于 MacOS,您可以通过 Homebrew 安装它,如下所示:

brew install dos2unix

接下来做

dos2unix FILENAME
25赞 Vitaly Isaev 9/2/2014 #9

如果您使用的是 Vim,只需输入以下命令:

:set fileformat=unix
3赞 karthiksatyanarayana 9/4/2015 #10

您可以尝试这样做:

sed --in-place 's/^M//g' main.py

[ 键入 ^M,按 ctrl+v,ctrl+m ]