问题描述
我使用 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
我知道的最短的。