如何将pip升级到最新?


51

我安装了pip get-pip.py之后pip freeze抛出以下错误

Exception:
Traceback (most recent call last):
  File "/usr/lib/python2.7/dist-packages/pip/basecommand.py", line 122, in main
    status = self.run(options, args)
  File "/usr/lib/python2.7/dist-packages/pip/commands/freeze.py", line 74, in run
    req = pip.FrozenRequirement.from_dist(dist, dependency_links, find_tags=find_tags)
  File "/usr/lib/python2.7/dist-packages/pip/__init__.py", line 299, in from_dist
    assert len(specs) == 1 and specs[0][0] == '=='
AssertionError

Storing debug log for failure in /home/simon/.pip/pip.log

所以我检查了1.7是最新的。如果我按照以下步骤操作,并且没有更新,请在这里帮助我...

simon@simon-OptiPlex-780:~/Nightybuild$ pip --version
pip 1.5.6 from /usr/lib/python2.7/dist-packages (python 2.7)
simon@simon-OptiPlex-780:~/Nightybuild$ pip --version
pip 1.5.6 from /usr/lib/python2.7/dist-packages (python 2.7)
simon@simon-OptiPlex-780:~/Nightybuild$ pip install -U pip
Downloading/unpacking pip
  Downloading pip-7.1.2-py2.py3-none-any.whl (1.1MB): 1.1MB downloaded
Installing collected packages: pip
Successfully installed pip
Cleaning up...
simon@simon-OptiPlex-780:~/Nightybuild$ pip --version
pip 1.5.6 from /usr/lib/python2.7/dist-packages (python 2.7)

1
sudo -H pip3 install --upgrade pip
Moldovean

Answers:


53

我通常只运行以下命令来升级pip2pip默认情况下)和pip3

sudo -H pip3 install --upgrade pip
sudo -H pip2 install --upgrade pip

您必须确保最后升级版本(对于Python 2或3),要对pip没有编号的命令做出反应。

还请注意,这会保留通过apt-get或其他任何软件包管理器安装的旧打包版本,但会添加与系统软件包无关的新版本。该pip-installed包将是首选,但你不应该删除apt-get任何-installed的,因为包管理器无法知道,任何pip版本的安装,否则。


3
为什么回家很重要sudo -H
莱奥波德·赫兹(LéoLéopoldHertz)2016年

11
@Masi因为pip想要将其下载的文件写入某处以对其进行缓存。已实现将其放置在当前用户主目录的子文件夹中。如果您在运行时没有-H它就会抱怨,因为它检测到当前设置的主目录(普通用户)与以(root)用户身份运行的用户不匹配。如果它在您的主目录中写入了文件,则它们将由root拥有,并且您将无法再以普通用户身份访问。因此,在这种情况下,它不会缓存文件。忽略-Has pip并警告您并不可怕。
字节指挥官

1
为什么两个命令都只是覆盖pip命令?升级时,pip2它不会升级pip2命令pip
Yep_It's_Me

@ Yep_It's_Me这是因为pip与您要调用的python版本有关。这就是为什么他的命令分别是pip2pip3分别调用python的相应版本来更新pip的原因。那有意义吗?
JayRizzo

27

我觉得

pip install --upgrade pip

命令不再正常工作。正确的命令应为:

  • 对于Python 3:

    python3 -m pip install --upgrade pip
  • 对于Python 2:

    python2 -m pip install --upgrade pip

GG @ david-foerster
JayRizzo

在Linux上,只需使用pip install -U pip(请参阅升级pip
Eido95

1
从根目录(在Docker映像中)更新pip时遇到了问题,它的工作原理很吸引人。
Cristian Ramon-Cortes

在Linux上像薄荷一样运转
HelloWorld

5

转到此网站https://pypi.python.org/pypi/pip

复制(或)下载源链接(以.tar.gz结尾)

对于9.0.1,链接是 https://pypi.python.org/pypi?:action=show_md5&digest=35f01da33009719497f01a4ba69d63c9

安装步骤

wget //link goes here
tar -xzvf pip-9.0.1.tar.gz
cd pip-9.0.1
sudo python3 setup.py install

应将版本更改为最新版本,并且可以使用最新版本的链接来更新链接

这应该工作


这是唯一对我有用的东西,因为其他所有内容都需要从外壳连接到服务器,而连接又因相同的错误而失败。
Alok Rajasukumaran


1

我认为值得一提的是,我在下面解释的是,如果您希望pip指向Python 2,而pip3指向Python 3,则我之所以提及,是因为在升级pip3时,它还会接管pip命令,因为好。这有点奇怪,因为默认情况下python指向2.x,而python3指向3.x。话虽如此...

如果要使最新版本的python 2.x pip和python 3.x pip3共存于同一台计算机上(对2.x使用pip,对于3.x使用pip3),则需要执行以下操作:

sudo apt-get install python-pip python3-pip --yes
sudo python3 -m pip install pip --upgrade --force
sudo python -m pip install pip --upgrade --force # this line associates pip with Python 2

其他人提供的其他答案没有提到,在运行sudo pip3 install pip --upgrade后,您将最终得到pip命令,将软件包安装在python 3.x目录中,而不是在python 2.x目录中。

我的一部分认为,在升级pip3之后,我们应该只保留pip(即使pip-> pip3),但是存在这样的危险,即人们已经期望pip之类的功能像python-都指向python2.x。换句话说,人们可能被训练为对python 2.x 使用pip / python,就像他们被训练为对python 3.x 使用pip3 / python3一样


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.