为什么Linux中的Python需要#!/usr/bin/python这一行?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了为什么Linux中的Python需要#!/usr/bin/python这一行?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2774字,纯文字阅读大概需要4分钟。
内容图文
![为什么Linux中的Python需要#!/usr/bin/python这一行?](/upload/InfoBanner/zyjiaocheng/959/5ac39f6e41c24df28c1c2953a2b89177.jpg)
非常简单的问题:在Linux中,为什么Python需要这一行
#!/usr/bin/python
在python文件的开头,因为Windows没有?
它有什么作用? ‘因为描述“链接到Python”有点模糊……
解决方法:
Python对Linux没有任何这样的特殊要求.它是Unix / Linux上的程序加载器,它使用了“shebang”行,就像它所说的那样.这实际上是一个功能而不是限制,但我们马上就会做到这一点. The Wiki page on “shebang” has more details,但我会尝试在这里给出一个概述以及与Windows的比较.
首先,让我们看看Windows上的情况:
>当您尝试打开或运行文件时,Windows首先检查该文件的扩展名.这是文件名的最后一部分.对于Python文件,这通常是.py.
> Windows根据文件扩展名查找要执行的操作.
>此信息记录在Windows注册表中;安装Python时,它通常告诉Windows应该使用新安装的应用程序Python(即Python解释器)打开.py文件.
>多种文件类型具有内置行为;例如,可执行文件(例如Python解释器本身)必须以.exe结尾,而.bat文件则作为Windows批处理脚本执行.
>对特定文件类型采取的操作是可自定义的.例如,您可以告诉Windows使用python.exe运行.py文件,而不是使用其他程序打开它们,例如文本编辑器notepad.exe.
>在这种情况下,为了运行Python脚本,您需要手动调用python< scriptname> .py(或写一个.bat文件来为您执行此操作).
现在,如果在Python脚本的顶部有一个shebang行(#!/usr/bin/python或#!/usr/bin/env python)会发生什么?好吧,因为#是Python中的注释行,Python解释器只是忽略它.这就是为什么Unix / Linux世界中使用的大多数脚本语言使用#来启动注释行的原因之一.
所以说Windows“不需要”#有点误导!线; Windows没有看到#! line,实际上依赖于文件扩展名来告诉它该怎么做.这有几个缺点:
>您必须在末尾使用.py命名Python脚本,以便自动识别它们.
>没有简单的方法可以区分Python2脚本和Python3脚本.
>如前所述,如果更改.py文件类型的默认启动行为,Windows将不再使用Python自动运行这些脚本.请注意,这可能是无意中完成的.
现在,让我们看看Unix / Linux如何启动脚本:
首先要注意的是,与Windows不同,Unix / Linux不是试图使用特定程序“打开”Python脚本,至少在概念上是这样;操作系统知道脚本是可以执行的,因为称为“执行位”(这超出了本答案的范围).因此,如果您不小心键入#!/usr/bin/pthon而不是#!/usr/bin/python,您将收到包含此文本的错误消息:
/usr/bin/pthon: bad interpreter: No such file or directory.
“解释器”这个词给了我们一个关于shebang线的作用的线索(虽然从技术上来说,指定的程序可以是解释器之外的其他东西,例如cat或文本编辑器).当您尝试执行文件时,会发生以下情况:
> Unix / Linux程序加载器查看该文件的前两个字节;如果这两个字节是#!,则加载程序将shebang行的其余部分(不包括shebang本身)解释为启动解释器的命令,使用该解释器将文件内容作为脚本运行.
>程序加载器启动指定的解释器,将原始文件的路径作为参数提供.
这有几个好处:
>脚本编写者可以更好地控制将使用哪个解释器(这解决了Python2 / Python3问题),并且有时可以将额外的参数传递给解释器(有关详细信息,请参阅Wiki页面).
>忽略脚本的文件名,因此您可以根据需要命名Python脚本.
最后,请注意,Unix / Linux不需要shebang行来运行Python脚本.回想一下,所有shebang行实际上都允许程序加载器选择一个解释器.但就像在Windows中一样,这可以手动完成:
python <myscript>
内容总结
以上是互联网集市为您收集整理的为什么Linux中的Python需要#!/usr/bin/python这一行?全部内容,希望文章能够帮你解决为什么Linux中的Python需要#!/usr/bin/python这一行?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。