Python 脚本的 shebang 应该是什么样的?
有些人支持#!/usr/bin/env python
因为它可以智能地找到Python解释器。其他人支持#!/usr/bin/python
,因为现在在大多数 GNU/Linux 发行版中python
是默认程序。
这两种变体有什么好处?
The Debian Python 政策 http://www.debian.org/doc/packaging-manuals/python-policy/ch-python.html#s-interpreter states:
Python 解释器的首选规范是/usr/bin/python
or /usr/bin/pythonX.Y
。这可确保使用 python 的 Debian 安装,并满足其他 python 模块的所有依赖关系。
维护者不应使用以下命令覆盖 Debian Python 解释器/usr/bin/env python
or /usr/bin/env pythonX.Y
。这是不可取的,因为它绕过了 Debian 的依赖性检查,并使软件包容易受到不完整的 python 本地安装的影响。
请注意,Debian/Ubuntu 使用替代系统来管理哪个版本/usr/bin/python
实际上指向。这在很多 python 版本中都运行得很好,至少对我来说(而且我现在一直在使用 python 从 2.3 到 2.7),并且在更新之间具有出色的过渡。
注意我从来没有用过pip
。我想要自动安全升级,所以我通过安装所有我需要的Pythonaptitude
。使用官方 Debian/Ubuntu 软件包让我的系统保持良好状态cleaner比我自己搞乱 python 安装。
让我强调一件事。上述建议参考的是systempython 应用程序的安装。让这些使用systempython 的托管版本。如果您实际上正在尝试自己定制的 python 安装,那就是not由操作系统管理,使用env
可能有变体is正确的说法是“使用用户首选的 python”,而不是硬编码系统 python 安装(这将是/usr/bin/python
) 或任何用户自定义路径。
Using env python
如果您从例如以下位置调用它们,将导致您的程序表现不同一个Python虚拟环境。
This 可以是想要的(例如,您正在编写一个脚本来工作only在你的虚拟环境中)。还有它可能有问题(您为自己编写了一个工具,并期望它即使在 virtualenv 中也能同样工作 - 它可能会突然失败,因为它缺少软件包)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)