遇见问题

因为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文件了

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

原文地址

GitHub 加速计划 / li / linux-dash
10.39 K
1.2 K
下载
A beautiful web dashboard for Linux
最近提交(Master分支:2 个月前 )
186a802e added ecosystem file for PM2 4 年前
5def40a3 Add host customization support for the NodeJS version 4 年前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐