zoukankan      html  css  js  c++  java
  • /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文件了

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

    原文地址

  • 相关阅读:
    6-8 Percolate Up and Down (20分)
    6-7 Isomorphic (20分)
    6-5 Evaluate Postfix Expression (25分)
    服务器磁盘满无法释放空间解析及解决
    必会的MySQL操作方法
    Tomcat基本安装和优化方法
    Nginx常用配置及优化安全
    Redis笔记整理(三):进阶操作与高级部分
    Redis笔记整理(二):Java API使用与Redis分布式集群环境搭建
    Redis笔记整理(一):Redis安装配置与数据类型操作
  • 原文地址:https://www.cnblogs.com/busui/p/6882581.html
Copyright © 2011-2022 走看看