首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使python程序成为可执行程序的问题

使python程序成为可执行程序的问题
EN

Stack Overflow用户
提问于 2010-04-09 11:19:12
回答 3查看 4.3K关注 0票数 4

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

代码语言:javascript
复制
./myProgram

我让它成为可执行文件,并将#!/usr/bin/env python放在头文件中,但它给了我以下错误。

代码语言:javascript
复制
env: python\r: No such file or directory

但是,当我运行"python myProgram“时,它运行得很好。谁能告诉我我哪里做错了?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-04-09 11:20:38

您的行尾错误。使用dos2unix来修复它们。

票数 17
EN

Stack Overflow用户

发布于 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)上,我得到这样的结果:

代码语言:javascript
复制
>>> import os
>>> os.linesep
'\n'

以下是我从hardcore Python intro course notes中抄袭的其他相关属性的快速摘要:

票数 11
EN

Stack Overflow用户

发布于 2010-04-09 11:47:43

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

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2604917

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档