使python程序可执行的问题

时间:2010-04-09 03:19:12

标签: python

我正在尝试创建一个程序,以便我可以使用以下格式通过命令行运行它:

./myProgram

我将其设为可执行文件并将#!/usr/bin/env python放入标题中,但它给了我以下错误。

env: python\r: No such file or directory

然而,当我运行“python myProgram”时,它运行正常。有人能告诉我我做错了吗?

3 个答案:

答案 0 :(得分:17)

你的行结尾是错误的。使用dos2unix修复它们。

答案 1 :(得分:11)

+1关于ignacio的建议。

但是,为了更直接地回答问题的第1部分,每个OS /系统使用不同的行终止字符:

POSIX(任何Unix风格,如Linux,* BSD,Mac OS X等)使用 \n (NEWLINE) DOS / Win使用组合 \r\n (CR /回车+ NEWLINE),旧Mac OS 8或9仅使用CR或 \r

要解决此问题,您可以运行像ignacio建议的实用程序,或者您应该可以从文本编辑器中执行此操作(但可能不是很明显)。

回答你问题的另一部分,$ python myProgram的工作原因是因为Python将所有三个不同的行结尾都视为相同...顶部的shebang行被忽略,因为你告诉Python加载和运行该脚本,“#”表示第一行是注释,因此被忽略。

当你告诉你的操作系统shell运行它时,它需要解析该行并执行你请求的任何解释器,但如果它不能,它会像你一样呕吐。

希望这有帮助!

PS。在旁注中,您可以找到操作系统上正在使用的行终止字符,只需查看os.linesep(数据)属性即可。例如,在我的Mac(OS X)上,我得到了这个:

>>> import os
>>> os.linesep
'\n'

这里是我从hardcore Python intro course notes抄袭的其他相关属性的快速摘要: alt text

答案 2 :(得分:3)

dos2unix filename.py或在vim内部发出命令:set fileformat=unix并保存。