我正在尝试编写一个程序,以便可以通过命令行以以下格式运行它:
./myProgram我让它成为可执行文件,并将#!/usr/bin/env python放在头文件中,但它给了我以下错误。
env: python\r: No such file or directory但是,当我运行"python myProgram“时,它运行得很好。谁能告诉我我哪里做错了?
发布于 2010-04-09 11:20:38
您的行尾错误。使用dos2unix来修复它们。
发布于 2010-04-09 12:13:02
根据ignacio的建议+1。
但是,为了更直接地回答问题的第一部分,每个操作系统/系统使用不同的行终止符:
POSIX (任何Unix风格,如Linux、*BSD、Mac OS X等)使用\n (换行符),而DOS/Win使用组合式\r\n ( CR /回车符+换行符),而旧的MacOS8或9只使用CR或\r.
要解决这个问题,你可以像ignacio建议的那样运行一个实用程序,或者你应该能够从你的文本编辑器中做到这一点(但是可能不是很明显)。
回答你问题的另一部分,$ python myProgram工作的原因是因为Python将所有三个不同的行尾都视为相同的……顶部的shebang行被忽略,因为您告诉Python加载并运行该脚本,"#“表示第一行是注释,因此被忽略。
当您告诉OS shell运行它时,它需要解析该行并执行您请求的任何解释器,但如果它不能执行,它就会像以前一样吐到您身上。
希望这能有所帮助!
ps。顺便说一句,您可以找到操作系统上使用的行终止符,只需查看os.linesep (data)属性。例如,在我的Mac (OS X)上,我得到这样的结果:
>>> import os
>>> os.linesep
'\n'以下是我从hardcore Python intro course notes中抄袭的其他相关属性的快速摘要:

发布于 2010-04-09 11:47:43
dos2unix filename.py或内部vim发出命令:set fileformat=unix并保存。
https://stackoverflow.com/questions/2604917
复制相似问题