之前在Windows下写的Python程序需要拿到Linux下执行,但是发现在Linux下执行时会提示解释器错误。查看源代码么有发现问题。
第一行字符串为#!/usr/bin/python3,这行代码可以使py文件在有执行权限时,可以使用./运行或双击运行。执行时终端提示如下:
bash: ./XXX.py: /usr/bin/python3^M: 解释器错误: 没有那个文件或目录
将第一行改为 #!/usr/bin/env python3后运行依旧报错,提示如下:
/usr/bin/env: "python3\r": 没有那个文件或目录
在看到这里时感觉时编码有问题,查找资料后发现这个问题是因为DOS/Windows和Linux/Unix的文件换行格式不同导致。DOS/Windwos系统中每行的换行是\r\n,而Linux/Unix下每行的换行是\n,这就导致了为什么会出现python3^M和python3\r的问题。
使用vim打开相应的py文件,执行如下命令:
:set ff=unix
这个命令在于将原有文件转换为Linux/Unix的默认文本格式。执行完成保存退出,再执行py文件发现程序已经可以运行了。