答案1
发生这种情况很可能是因为您在同一前缀 ( ) 上使用了两个不同的包管理器(dpkg
或其前端apt-get
及其本身) 。我假设pip
/usr
- 最近
apt-get upgrade
更新了一些依赖项,但安装的其他一些文件pip
没有更新,因为dpkg
根本apt-get
不知道它们或者 - 您使用 删除了一个软件包
apt-get remove
,并且由于apt-get
不知道任何使用此软件包的内容(因为另一个软件包是由 所安装的pip
,因此不在dpkg
数据库中),因此它不会警告您有关破坏其他软件包的信息。
在不知道哪些软件包是通过哪个软件包管理器安装的情况下,我无法为您提供任何如何修复系统的具体建议,只能提供一般建议:
不要使用多个不同的包管理器。对于文件系统的给定(子)树,只能使用一个包管理器,否则会出现不一致和/或冲突。 Debian 的/usr
树包管理器被称为dpkg
,并且不调用它没有人应该曾经触碰/usr
。
你遇到的大多数与 Python 相关的人都会尝试推送 pip,甚至告诉你这样做,这当然没有帮助sudo pip install
;不。有一些发行版包包含 python 的东西是有原因的。另请参阅AskUbuntu 上的这个相关问题和StackOverflow 上的这个答案。
您可以尝试通过安装新的 pip 来修复混乱
apt-get purge python-pip python3-pip
apt-get install python-pip python3-pip
但是,可能会留下一些可能会造成干扰的文件,这些文件dpkg
不知道,因为它们是由pip
.可靠的方法是检查所有文件是否/usr/lib/python*
属于 debian 软件包,如果不属于,则一律删除。
再次,仅有的使用、、 、 ...dpkg
等前端工具进行修改。如果您需要在系统范围内安装任何无法作为软件包提供的内容,请创建一个软件包并使用 进行安装,或者将其安装在 下。apt-get
aptitude
synaptic
/usr
.deb
dpkg
/usr/local
答案2
将 python2.7 设置为默认:
sudo update-alternatives --config python
选择python2.7。
消除pip
:
sudo python -m pip uninstall pip
sudo apt purge --autoremove python-pip
重新安装它:
sudo apt install python-pip
检查pip --version
:
pip 9.0.1 from /usr/lib/python2.7/dist-packages (python 2.7)
不要升级pip
到最新版本。
答案3
尝试一下这个命令:
hash -d pip