当前位置: 首页>>技术教程>>正文


如何将 pip 升级到最新版本?

, ,

问题描述

我使用 get-pip.py 安装了 pip,但在执行 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

我检查过 pip 版本 1.7 是最新的。但是,通过 pip install -U pip 更新 pip 并没有更新我的 pip。我该如何解决这个问题?

    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)

最佳方案

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

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

您必须确保升级版本(对于 Python 2 或 3),您希望最后对不带编号的命令 pip 作出反应。

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

次佳方案

我觉得

pip install --upgrade pip

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

  • 对于 Python 3:

    \n

    python3 -m pip install --upgrade pip\n

    \n

  • 对于 Python 2:

    \n

    python2 -m pip install --upgrade pip\n

    \n

附言如果您想确保您的其他 Python 包也是最新的,请按照 here 的说明进行操作。

第三种方案

转到网站 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

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

这应该工作。

第四种方案

我认为值得一提的是,我在下面解释的是,如果您希望 pip 指向 Python 2,pip3 指向 Python 3。我之所以提到这一点,是因为当您升级 pip3 时,它也会接管 pip 命令作为出色地。这是一个有点奇怪的约定,因为默认情况下 python 指向 2.x 而 python3 指向 3.x。话虽如此…

如果你想让最新版本的 python 2.x pip 和 python 3.x pip3 在同一台机器上共存(使用 pip for 2.x 和 pip3 for 3.x),你需要执行以下操作:

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 一样运行 – 都指向 python 2.x。换句话说,人们可能接受过将 pip/python 用于 python 2.x 的训练,就像他们接受过将 pip3/python3 用于 python 3.x 的训练一样。

第五种方案

pip install -U pip

我知道的最短的。

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/13497.html,未经允许,请勿转载。