这个问题确实没有一个“答案”,但肯定有一些有用的概念可以帮助您做出决定。
在您的用例中需要回答的第一个问题是“我要使用系统 Python 吗?”如果你想使用随操作系统分发的 Python,那么使用 apt-get install 方法可能就可以了。但是,根据操作系统的分发方法,您仍然需要提出更多问题,例如“我要安装此软件包的多个版本吗?”如果答案是肯定的,那么使用 apt 之类的东西可能不是一个好主意。 Dpkg 几乎只会在文件系统的根目录解压一个存档,因此包维护者需要确保包在非常少的假设下安全安装。对于大多数 debian 软件包,我会假设(有人可以在这里纠正我)他们只是解压缩并提供顶级软件包。
例如,假设包是“virtualenv”,你最终会得到/usr/lib/python2.x/site-packages/virtualenv。如果你用easy_install 安装它,你会得到类似/usr/lib/python2.x/site-packages/virtualenv.egg-link 的东西,它可能指向/usr/lib/python2.x/site-packages/virtualenv-1.2-2.x.egg,它可能是一个目录或压缩的鸡蛋。 Pip 做了类似的事情,虽然它不使用鸡蛋,而是将顶级包直接放在lib 目录中。
我可能会偏离路径,但关键是每种方法都考虑了不同的需求。这就是为什么像 virtualenv 这样的工具很有帮助,因为它们允许您对 Python 库进行沙箱化,这样您就可以拥有所需的库和版本的任何组合。
Setuptools 还允许将软件包安装为多版本,这意味着不会创建单一的 module_name.egg-link。要导入这些包,您需要使用 pkg_resources 和 __import__ 函数。
回到你最初的问题,如果你对系统 python 感到满意并计划使用 virtualenv 和 pip 为不同的应用程序构建环境,那么使用 apt-get 在系统级别安装 virtualenv 和/或 pip 似乎完全合适.不过需要注意的一点是,如果您计划升级您的 Python 发行版,如果您链接回系统站点包,这可能会对您的 virtualenvs 产生连锁反应。
我还应该提到,这些选项中没有一个天生就比其他选项更好。他们只是采取不同的方法。使用系统版本是安装 Python 应用程序的好方法,但使用 Python 开发可能是一种非常困难的方法。 Easy install and setuptools 在没有 virtualenv 的世界里非常方便,但是如果你需要使用同一个库的不同版本,那么它也会变得相当笨拙。 Pip 和 virtualenv 实际上更像是一个虚拟机。无需注意并排安装,您只需创建一个全新的环境。这里的缺点是 30 多个 virtualenvs 之后你可能已经用掉了相当多的磁盘空间并弄乱了你的文件系统。
正如您所看到的,由于选项众多,很难说出使用哪种方法,但是通过对您的用例进行一些调查,您应该能够找到一种有效的方法。