python 包管理器-避免与 apt-get 发生冲突

python 包管理器-避免与 apt-get 发生冲突

刚刚读过此评论在升级 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 的 python 包,并且不在任何 apt-get 存储库中,并且还具有依赖项。

答案1

根据多年处理 Python 依赖问题的经验,我的观点是,您不应该在 apt 之外升级系统 Python 包。这总是会导致此类问题。系统包管理器提供了稳定版本的 Python 和具有复杂依赖系统的各种 Python 包,当您尝试在 apt 之外手动更改这些包时,可能会造成混乱。

我建议清除 python-pip,重新安装 apt 提供的版本,然后仅使用系统 Python 执行系统相关任务和不需要额外软件包的小脚本。对于需要通常使用 pip 安装的其他软件包的开发工作,您可以创建虚拟环境(基本上是不会影响系统 Python 的新 Python 安装),或者更好的是(在我看来),安装 Anaconda Python,它允许您使用 pip 和 conda 安装 Python 软件包而不会破坏系统 Python。

答案2

正如@siddesh-chavan 指出的链接所示,apt-get 和 python 包管理器的界面存在一些问题。我不推荐链接的解决方案。相反,我认为最好读这个,如果你已经升级了 pip/pip3,那么降级这边走。结果是,不要升级系统的 pip 或 pip3。使用 进行本地安装和升级pip* install --user

第二个链接下面的答案也提到虚拟环境,正如@steve 在他的回答中所说的那样 - 见下文。

答案3

相关内容