刚刚阅读了有关升级 pip 的评论后,我运行了:
sudo pip3 install --upgrade pip
正如@ByteCommander 指出的那样,升级到/usr/local/bin/pip3
,而发行版的版本(来自python3-pip)位于/usr/bin/pip3
,并且由于PATH 中的顺序,第一个版本具有优先权。这似乎工作正常,但如果我专门运行 Ubuntu 的版本(16.04),我会收到一个错误:
/usr/bin/pip3 -V
Traceback (most recent call last):
File "/usr/bin/pip3", line 9, in <module>
from pip import main
ImportError: cannot import name 'main'
这让我对 python 升级持怀疑态度。所以,我一直在尝试安装一个实际上来自 git repo 并且不在任何 apt-get repos中并且也具有依赖关系的python 包。
经过多年处理 Python 依赖问题的经验后,我的意见是,您不应该在 apt 之外升级系统 Python 包。这总是会导致这些类型的问题。系统包管理器提供了 Python 的稳定版本和具有复杂依赖系统的各种 Python 包,当您尝试在 apt 之外手动更改这些包时,可能会造成混乱。
我建议清除 python-pip,重新安装 apt 提供的版本,然后只使用系统 Python 执行系统相关任务和不需要额外包的小脚本。对于需要通常使用 pip 安装的其他软件包的开发工作,您可以创建虚拟环境(基本上是不会影响系统 Python 的新 Python 安装),或者甚至更好(IMO),安装允许的 Anaconda Python您可以在不破坏系统 Python 的情况下使用 pip 和 conda 安装 Python 包。
正如@siddesh-chavan 指向的链接所示,apt-get 和 python 包管理器的接口存在一些问题。我不会推荐那个链接的解决方案。相反,我认为最好阅读这篇文章,如果您已经升级了 pip/pip3,那么请以这种方式降级。结果是,不要升级系统的pip或pip3。使用 . 在本地进行安装和升级
pip* install --user
。第二个链接下方的答案也提到了虚拟环境,@steve 在他的答案中也提到了 - 见下文。
这方面已经有帖子了。
https://stackoverflow.com/questions/28210269/importerror-cannot-import-name-main-when-running-pip-version-command-in-windo
这对我有用。