python-pip:导入错误:无法导入名称 main

python-pip:导入错误:无法导入名称 main

我正在使用 Debian 9.5 Stretch 版本。我在使用 pip 时遇到导入错误。当我尝试使用 pip 时,它说:

在此输入图像描述

不过我可以使用 python: 在此输入图像描述

我安装了两个版本的python:2.7和3.5

其中 pip 的输出:/usr/bin/pip

当我尝试使用 apt-get pip 重新安装它时,第一次工作完全正常,但下次它显示相同的错误

内容/usr/bin/

在此输入图像描述 在此输入图像描述

不知道是什么问题。

答案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-getaptitudesynaptic/usr.debdpkg/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

相关内容