首页 > Python > 为什么人们在 Python 脚本的第一行写 #!/usr/bin/env python?

为什么人们在 Python 脚本的第一行写 #!/usr/bin/env python?

上一篇 下一篇

我在 Python 文件的顶部看到这些:

#!/usr/bin/env python
#!/usr/bin/env python3

在我看来,没有那行,文件运行相同。

分割线

网友回答:

如果您安装了多个版本的 Python,将确保使用的解释器是您环境中的第一个解释器。另一种方法是硬编码类似 ;没关系,但不太灵活。/usr/bin/env$PATH#!/usr/bin/python

在Unix中,要解释的可执行文件可以通过在第一行的开头加上解释器(以及它可能需要的任何标志)来指示要使用的解释器。#!

当然,如果你在谈论其他平台,这个规则不适用(但“shebang line”不会造成伤害,如果你将该脚本复制到具有 Unix 基础的平台,例如 Linux、Mac 等)会有所帮助)。

分割线
网友回答:

这就是所谓的舍邦线。正如维基百科条目所解释的那样:

在计算中,shebang(也称为hashbang,hashpling,pound bang或crunchbang)是指当字符“#!”是解释器指令中的前两个字符作为文本文件的第一行时。在类 Unix 操作系统中,程序加载器将这两个字符的存在作为文件是脚本的指示,并尝试使用文件中第一行其余部分指定的解释器执行该脚本。

另请参阅 Unix FAQ 条目。

即使在 Windows 上,shebang 行不能确定要运行的解释器,也可以通过在 shebang 行上指定选项来将选项传递给解释器。我发现在一次性脚本中保留通用的 shebang 行很有用(例如我在回答 SO 问题时编写的脚本),这样我就可以在 Windows 和 ArchLinux 上快速测试它们。

env 实用程序允许您在路径上调用命令:

剩下的第一个参数指定要调用的程序名称;根据环境变量搜索它。任何剩余的参数都将作为参数传递给该程序。PATH

分割线
网友回答:

稍微扩展一下其他答案,这里有一个小例子,说明你的命令行脚本如何因不谨慎地使用 shebang 行而陷入困境:/usr/bin/env

$ /usr/local/bin/python -V
Python 2.6.4
$ /usr/bin/python -V
Python 2.5.1
$ cat my_script.py 
#!/usr/bin/env python
import json
print "hello, json"
$ PATH=/usr/local/bin:/usr/bin
$ ./my_script.py 
hello, json
$ PATH=/usr/bin:/usr/local/bin
$ ./my_script.py 
Traceback (most recent call last):
  File "./my_script.py", line 2, in <module>
    import json
ImportError: No module named json

json 模块在 Python 2.5 中不存在。

防止此类问题的一种方法是使用通常随大多数 Python 一起安装的版本化 python 命令名称:

$ cat my_script.py 
#!/usr/bin/env python2.6
import json
print "hello, json"

如果你只需要区分 Python 2.x 和 Python 3.x,最近发布的 Python 3 也提供了一个名称:python3

$ cat my_script.py 
#!/usr/bin/env python3
import json
print("hello, json")

模板简介:该模板名称为【为什么人们在 Python 脚本的第一行写 #!/usr/bin/env python?】,大小是暂无信息,文档格式为.编程语言,推荐使用Sublime/Dreamweaver/HBuilder打开,作品中的图片,文字等数据均可修改,图片请在作品中选中图片替换即可,文字修改直接点击文字修改即可,您也可以新增或修改作品中的内容,该模板来自用户分享,如有侵权行为请联系网站客服处理。欢迎来懒人模板【Python】栏目查找您需要的精美模板。

相关搜索
  • 下载密码 lanrenmb
  • 下载次数 294次
  • 使用软件 Sublime/Dreamweaver/HBuilder
  • 文件格式 编程语言
  • 文件大小 暂无信息
  • 上传时间 03-30
  • 作者 网友投稿
  • 肖像权 人物画像及字体仅供参考
栏目分类 更多 >
热门推荐 更多 >
响应式 微信图片 微信模板 企业网站 微信文章 微信素材 微信公众平台 自适应 html5 单页式简历模板
您可能会喜欢的其他模板