有些人支持#!/usr/bin/env python,因为它可以智能地找到Python解释器.其他支持#!/usr/bin/python,因为现在在大多数GNU / Linux发行版中,python是默认程序.
这两种变体有什么好处?
解决方法
The preferred specification for the Python interpreter is
/usr/bin/python
or/usr/bin/pythonX.Y
. This ensures that a Debian installation of python is used and all dependencies on additional python modules are met.Maintainers should not override the Debian Python interpreter using
/usr/bin/env python
or/usr/bin/env pythonX.Y
. This is not advisable as it bypasses Debian’s dependency checking and makes the package vulnerable to incomplete local installations of python.
请注意,Debian / Ubuntu使用替代系统来管理/usr/bin/python实际指向的版本.至少对我来说,这已经非常好地运行在很多python版本中(而且我现在已经在2.3到2.7之间使用python),在更新过程中有很好的转换.
请注意,我从来没有使用过.我想要自动安全升级,所以我通过aptitude安装所有的python需求.使用官方的Debian / Ubuntu软件包可以让我的系统比我自己安装python安装更加清洁.
让我强调一件事以上建议是指系统安装python应用程序.让这些使用系统管理的python版本是非常有意义的.如果您实际使用自己的,自定义安装的python不受操作系统管理,使用env变体可能是说“使用用户喜欢的python”的正确方法,而不是硬编码系统python安装(这将是/usr/bin/python)或任何用户自定义路径.
使用env python会导致你的程序的行为不一样,如果你从一个python virtualenv.
这可以是必需的(例如,您正在编写一个脚本,只在您的virtualenv中工作).这可能是有问题的(你为你写一个工具,并期望它甚至在一个virtualenv中工作 – 它可能突然失败,因为它丢失了包).