这个问题确实没有一个单独的“答案”,但是肯定有一些有用的概念可以帮助您做出决定。
您的用例中需要回答的第一个问题是“我要使用系统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还允许将软件包安装为多版本,这意味着不会dule_name.egg-link
创建单个模块。要导入这些软件包,您需要使用pkg_resources和__import__
函数。
回到最初的问题,如果您对系统python感到满意,并计划使用virtualenv和pip为不同的应用程序构建环境,然后使用apt-get在系统级别安装virtualenv和/或pip似乎是完全合适的。但是请注意,如果计划升级发行版Python,则如果链接回系统站点程序包,则可能会对您的virtualenvs产生连锁反应。
我还应该提到,这些选择在本质上都不比其他选择更好。他们只是采取不同的方法。使用系统版本是安装Python应用程序的绝佳方法,但是使用Python开发可能是非常困难的方法。在没有virtualenv的环境中,易于安装和设置工具非常方便,但是如果您需要使用同一库的不同版本,那么它也将变得非常笨拙。Pip和virtualenv实际上更像是一台虚拟机。您无需创建并排安装的东西,而只是创建一个全新的环境。不利的一面是30多个virtualenvs以后,您可能已经用完了很多磁盘空间并弄乱了文件系统。
如您所见,使用许多选项很难说出要使用哪种方法,但是只要对用例进行一些调查,就应该能够找到一种可行的方法。
ez_setup.py
争取“轻巧版本”的点子。我会做同样的事情,但担心它会在不久的将来打破,并且我会像以前一样经常被卡在这里