制作Python程序可执行时的问题
我正在尝试制作一个程序,这样我就可以通过命令行以以下格式运行它:
./myProgram
我已经把它设置成可执行文件,并在开头加上了 #!/usr/bin/env python
,但是它给了我以下错误。
env: python\r: No such file or directory
不过,当我运行 "python myProgram" 时,它运行得很好。有人能告诉我我哪里做错了吗?
3 个回答
你可以使用命令 dos2unix filename.py
来转换文件格式,或者在 vim 编辑器里输入命令 :set fileformat=unix
然后保存文件。
我也赞同ignacio的建议。
不过,为了更直接地回答你问题的第一部分,每种操作系统使用的换行符是不一样的:
POSIX(像Linux、*BSD、Mac OS X等Unix类系统)使用的是\n
(换行符),而DOS/Windows则使用组合\r\n
(回车符加换行符),旧版的Mac OS 8或9只使用回车符\r
。
要解决这个问题,你可以运行一个像ignacio建议的工具,或者你也可以通过你的文本编辑器来处理(不过可能不太明显)。
至于你问题的另一部分,$ python myProgram
之所以能工作,是因为Python把这三种不同的换行符都当作一样的处理……脚本顶部的shebang行会被忽略,因为你告诉Python去加载和运行这个脚本,而"#
"表示第一行是注释,所以也会被忽略。
当你让操作系统的命令行去运行它时,它需要解析那一行并执行你请求的解释器,但如果它无法做到这一点,就会出错,就像你遇到的那样。
希望这能帮到你!
顺便提一下,你可以查一下你的操作系统使用的换行符是什么,只需查看os.linesep
(数据)属性。例如,在我的Mac(OS X)上,我得到的是:
>>> import os
>>> os.linesep
'\n'
这里有个快速总结,关于我从我的硬核Python入门课程笔记中抄来的其他相关属性:

你的文件换行符不对。可以用 dos2unix
这个工具来修复它们。