/usr/bin/python^M: 解释器错误: 没有那个文件或目录

遇见问题

因为linux在虚拟机中,所以就在本地敲python代码,敲完后再拿到虚拟机去执行,再输入./filename.py时,就遇到这样的一个问题:

bash: ./filename.py: /usr/bin/python^M: 解释器错误: 没有那个文件或目录

开始还以为是自己的python路径不对,但用which python命令查看却发现路径已经配置对了。因为有另一种执行方式,就是直接python filename.py,后来我发觉这种方式虽然能够执行代码,但执行结果却不对,于是,就去搜索了一下。发现,原来是自己在dos下写的代码,拿到linux下,存在不兼容。


分析原因

这是不同系统编码格式引起的:在windows系统中编辑的.sh .py文件可能有不可见字符,所以在Linux系统下执行会报以上异常信息。一般是因为windows行结尾和linux行结尾标识不同造成的。


解决方案

在windows下解决:

利用一些编辑器如UltraEdit或EditPlus等工具先将脚本编码转换,再放到Linux中执行。转换方式如下(UltraEdit):File-->Conversions-->DOS->UNIX即可。

linux下直接替换:

sed -i 's/^M//g' filename (注意^M 在linux 下写法 按^M 是回车换行符,输入方法是按住CTRL+v,松开v,按m)(这个方法我试过了,不灵验)

也可在Linux中转换:

  1. 首先要确保文件有可执行权限:#sh>chmod a+x filename
  2. 然后修改文件格式: #sh>vi filename
  3. 利用如下命令查看文件格式: :set ff 或 :set fileformat
  4. 可以看到如下信息: fileformat=dos 或 fileformat=unix
  5. 利用如下命令修改文件格式: :set ff=unix 或 :set fileformat=unix
  6. 保存退出,你就可以以./filename方式执行filename文件了

这图是我操作过程的一部分:

原文地址

posted @ 2017-05-20 17:12  busui  阅读(2756)  评论(0编辑  收藏  举报