在系统范围内安装pip和virtualenv的官方“首选”方式是什么?


86

这是人们似乎最常推荐的:

$ sudo apt-get install python-setuptools
$ sudo easy_install pip
$ sudo pip install virtualenv

或者这是我从http://www.pip-installer.org/en/latest/installing.html获得的

$ curl -O https://github.com/pypa/virtualenv/raw/master/virtualenv.py
$ python virtualenv.py my_new_env
$ . my_new_env/bin/activate
(my_new_env)$ pip install ...

还是完全不同的东西?

Answers:


93

如果您可以安装最新的Python(2.7.9及更高版本),则现在已将Pip捆绑在一起。请参阅:https : //docs.python.org/2.7//installing/index.html
如果不是:
更新(从发行说明中):

从v1.5.1开始,pip在运行get-pip.py之前不需要setuptools。另外,如果尚未安装setuptools(或分发),则get-pip.py将为您安装setuptools。

我现在运行常规:

curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | sudo python

以下是官方安装说明:http : //pip.readthedocs.org/en/latest/installing.html#install-pip

编辑2013年7月25日:
更改了setuptools安装的URL。

编辑2014年2月10日:
删除了setuptools安装程序(感谢@Ciantic)

编辑2014年6月26日:
再次更新了网址(感谢@LarsH)

编辑2015年3月1日:
Pip现在与Python捆绑在一起


1
在哪里/如何安装setuptools-0.8?看起来您只是在ez_setup.py争取“轻巧版本”的点子。我会做同样的事情,但担心它会在不久的将来打破,并且我会像以前一样经常被卡在这里
史蒂文·卢

3
嗯,就像说的一样,就像您在这里说的那样,它已获得批准。没关系。
史蒂文·卢

4
有一种新的方法(?),它会自动安装pip和setuptools: wget --no-check-certificate https://raw.github.com/pypa/pip/master/contrib/get-pip.py 然后 python get-pip.py(可能需要sudo)
Ciantic 2014年

3
现在,get-pip.py的URL似乎已更改为https://bootstrap.pypa.io/get-pip.py。仅链接到官方说明可能更好。
LarsH 2014年

2
PS感谢您的答案-它帮助我安装了点子。
LarsH 2014年

21

http://www.pip-installer.org/en/latest/installing.html确实是该问题的规范答案。

具体来说,系统范围内的说明是:

$ curl -O http://python-distribute.org/distribute_setup.py
$ python distribute_setup.py
$ curl -O https://raw.github.com/pypa/pip/master/contrib/get-pip.py
$ python get-pip.py

问题中引用的部分是virtualenv说明,而不是系统范围的说明。这些easy_install说明已经存在很长时间了,但是没有必要再这样做了。


已进行编辑,以阐明该页面上的系统范围说明virtualenv与问题中引用的说明之间的区别。
ncoghlan 2011年

1
更新:分发不再适用于点子!见stackoverflow.com/a/17601159/78234
Tal Weiss

1
请注意,链接页面上的说明不再与此处的说明匹配。最好只是访问官方页面并按照他们的
意愿

此答案中描述的方法已过时,似乎不再有效。
2015年

16

这个答案来自Twitter上的@webology:

$ sudo apt-get install python-setuptools
$ sudo easy_install pip
$ sudo pip install --upgrade pip virtualenv virtualenvwrapper

我添加的注释:

  • 在Mac / Windows(如果apt仓库已过时,则为Linux)上的第一步,是从http://pypi.python.org/pypi/setuptools下载setuptools来代替第一步。
  • 在Windows上,您必须从最后一步中省略virtualenvwrapper并以某种方式手动安装。我不知道如果没有Cygwin,是否有办法做到这一点,但我希望如此。

1
如果条件是您想要在系统范围内安装pip和virtualenv,则这通常是我要做的。来自pip文档的说明是问题中的第二种选择,其前提是我们避免在系统范围内安装任何东西。
卡尔·梅耶

3
您可以将前两个命令替换为$ sudo apt-get install python-pip。安装python-pip还将安装python-setuptools。
丹尼斯

4

在Ubuntu 12.04上,仅使用软件包管理器就很幸运:

sudo apt-get install python-pip virtualenvwrapper

1
打包版本已经过时了。12.04提供python-pip 1.0-1build1于2011年初发布,并virtualenvwrapper 2.11.1-21于2012年1月发布。@Richard Jones的答案将为您提供最新信息。
JCotton

3

没有首选的方法-一切都取决于您的需求。无论出于何种原因,您通常都需要在系统上使用不同的Python解释器。在这种情况下,您需要为每个解释器分别安装这些东西。除此之外:我更喜欢自己安装东西,而不是依赖有时会导致问题的预包装东西-但这只是一种选择。


我要问的是首选方法,因为我打算将这些说明提供给20个人的班级,并且不想误导他们。
咖啡研磨机,

3

这个问题确实没有一个单独的“答案”,但是肯定有一些有用的概念可以帮助您做出决定。

您的用例中需要回答的第一个问题是“我要使用系统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以后,您可能已经用完了很多磁盘空间并弄乱了文件系统。

如您所见,使用许多选项很难说出要使用哪种方法,但是只要对用例进行一些调查,就应该能够找到一种可行的方法。



2

由于virtualenvs默认包含pip,因此我几乎从不全局安装pip。我所做的最终看起来像是:

$ sudo apt-get install python-setuptools
$ curl -O http://python-distribute.org/distribute_setup.py
$ sudo python distribute_setup.py
$ sudo easy_install virtualenv

然后,按照我的喜好继续安装和设置virtualenvwrapper,然后关闭。看看Jeremy Avnet的virtualenv-burrito也许也是值得的:

https://github.com/brainsik/virtualenv-burrito


谢谢你的收获。;)
David Gouldin 2011年

3
为什么要打扰python-setuptools然后在直接分发时才能分发?
lambacck 2011年

@lambacck您能否在一个单独的答案中张贴您正在描述的内容(即使看起来是重复的)?
咖啡研磨机,

2
更不用说在任何最近的Ubuntu(和Debian也是如此)上,“ python-setuptools”软件包实际上是分发版的,因此您也可以跳过特定的分发步骤。
卡尔·梅耶

@ coffee-grinder Distribution是setuptools的一个分支,因此提供了相同的功能(以及更多功能)。不要打扰做“apt-get的安装python-setuptools的”,除非中的python-setuptools的IS分发(卡尔表示这可能是),在这种情况下跳过步骤2和3
lambacck

2

@ericholscher在Twitter上说:“官方文档中的那个。”

这很重要,您应该按文档所说的去做。

引用了http://www.pip-installer.org/en/latest/installing.html上的官方pip安装说明:

$ curl -O https://github.com/pypa/virtualenv/raw/master/virtualenv.py
$ python virtualenv.py my_new_env
$ . my_new_env/bin/activate
(my_new_env)$ pip install ...

✓如果您不想依赖分发软件包,这是最佳选择。
东武

2

从发行版软件包开始,您可以使用:

sudo apt-get install python-virtualenv

通过它可以创建virtualenvs,或者

sudo apt-get install python{,3}-pip

这样您就可以将任意软件包安装到主目录。

如果您习惯使用virtualenv,则第一个命令会为您提供所需的一切(请记住,pip已捆绑,并将安装在您创建的任何virtualenv中)。

如果您只想安装软件包,第二个命令将为您提供所需的内容。像这样使用点子:

pip install --user something

并把像

PATH=~/.local/bin:$PATH

在你的~/.bashrc


如果您的发行版是古老的,并且您根本不想使用它的软件包(可能是Python本身除外),则可以下载virtualenv,可以将其作为tarball或独立脚本使用:

wget -O ~/bin/virtualenv https://raw.github.com/pypa/virtualenv/master/virtualenv.py
chmod +x ~/bin/virtualenv

如果您的发行版更像是最前沿的版本,则Python3.3具有内置的virtualenv类似功能:

python3 -m venv ./venv

这样可以更快地运行,但是不包括setuptools和pip。


2

要在Mac(OSX)上安装pip,以下一种衬管对我非常有用:

sudo easy_install pip

2

在Raspbian中,甚至无需提及python2.7。的确,如果python版本低于2.7.9,这是安装pip的最佳方法。

curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | sudo python

感谢@ tal-weiss



1

我使用get-pip和virtualenv-burrito来安装所有这些程序。不知道是否需要python-setuptools。

# might be optional. I install as part of my standard ubuntu setup script
sudo apt-get -y install python-setuptools

# install pip (using get-pip.py from pip contrib)
curl -O https://raw.github.com/pypa/pip/develop/contrib/get-pip.py && sudo python get-pip.py

# one-line virtualenv and virtualenvwrapper using virtualenv-burrito
curl -s https://raw.github.com/brainsik/virtualenv-burrito/master/virtualenv-burrito.sh | bash


0

前一种方法很好。我能看到的唯一问题是,您可能最终会使用旧版本的setuptools(如果apt信息库尚未保持最新。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.