我有一个系统我升级了几个 Ubuntu 版本,现在我似乎有多个版本的 pip:
$ whereis pip3
pip3: /usr/bin/pip3 /usr/local/bin/pip3 /usr/local/bin/pip3.5 /usr/local/bin/pip3.4 /usr/share/man/man1/pip3.1.gz
当我输入“pip3”时,我得到结果:
...Traceback (most recent call last):
File "/usr/local/bin/pip3", line 5, in <module>
from pkg_resources import load_entry_point
File "/usr/lib/python3/dist-packages/pkg_resources/__init__.py", line 3088, in <module>
@_call_aside
File "/usr/lib/python3/dist-packages/pkg_resources/__init__.py", line 3072, in _call_aside
f(*args, **kwargs)
File "/usr/lib/python3/dist-packages/pkg_resources/__init__.py", line 3101, in _initialize_master_working_set
working_set = WorkingSet._build_master()
File "/usr/lib/python3/dist-packages/pkg_resources/__init__.py", line 576, in _build_master
return cls._build_from_requirements(__requires__)
File "/usr/lib/python3/dist-packages/pkg_resources/__init__.py", line 589, in _build_from_requirements
dists = ws.resolve(reqs, Environment())
File "/usr/lib/python3/dist-packages/pkg_resources/__init__.py", line 778, in resolve
raise DistributionNotFound(req, requirers)
pkg_resources.DistributionNotFound: The 'pip==8.1.1' distribution was not found and is required by the application
但是当我运行 /usr/bin/pip3(我可以看到 Synaptic 显示为已安装的 python3-pip 包中的一个)时,我没有收到任何错误,而是收到了要使用的参数列表。那么卸载系统上所有旧 pip 引用的最佳方法是什么?
答案1
解决当前问题的最简单方法是sudo rm /usr/local/bin/pip*
。
使用 pip 可执行文件可能会让您陷入一种奇怪的状态,因此现在许多人使用 的形式python3 -m pip
而不是pip3
。当您的系统上安装了多个版本的 Python 时(看起来您有 Python 3.4 和 3.5),就会出现问题,因为每个版本都有自己的 pip 模块副本。pip 还会将自身安装/usr/local/bin/
为其特定版本(例如/usr/local/bin/pip3.5
)以及/usr/local/bin/pip3
+ /usr/local/bin/pip
。根据更新的版本,这些可执行文件不会同步。
如果您需要最新版本的 pip,请执行sudo /path/to/python3 -m pip install --upgrade pip
,删除/usr/local/bin/pip
+ /usr/local/bin/pip3
,然后使用 创建符号链接sudo ln -s /usr/local/bin/pip3.<VERSION> /usr/local/bin/pip3
。