Debian Python 政策规定:
Python 解释器的首选规范是/usr/bin/python
或/usr/bin/pythonX.Y
。这可确保使用 Debian 安装的 python 并满足对其他 python 模块的所有依赖项。
维护者不应使用/usr/bin/env python
或覆盖 Debian Python 解释器/usr/bin/env pythonX.Y
。这是不可取的,因为它绕过了 Debian 的依赖项检查,并且使包容易受到不完整的本地 python 安装的影响。
请注意,Debian/Ubuntu 使用替代系统来管理/usr/bin/python
实际指向的版本。至少对我来说,这在很多 python 版本中运行得非常好(我现在一直在使用从 2.3 到 2.7 的 python),并且在更新之间具有出色的过渡。
请注意,我从未使用过pip
. 我想要自动安全升级,所以我通过aptitude
. 使用官方的 Debian/Ubuntu 软件包让我的系统比我自己安装 python更干净。
让我强调一件事。以上推荐是针对python应用的系统安装。让这些使用系统管理的 python 版本非常有意义。如果您实际上是在玩自己的、不受操作系统管理的自定义 python 安装,那么使用env
变体可能是说“使用用户首选的 python”的正确方式,而不是对系统进行硬编码python 安装(可能是/usr/bin/python
)或任何用户自定义路径。
如果您从例如 python virtualenv 调用它们,使用env python
将导致您的程序表现不同。
这可能是需要的(例如,您正在编写一个仅在您的 virtualenv 中工作的脚本)。而且它可能是有问题的(您为自己编写了一个工具,并期望它即使在 virtualenv 中也能正常工作——它可能会突然失败,因为它当时缺少包)。