pip 会覆盖 apt-get 安装的软件包吗?

Fre*_*d S 11 python apt pip

如果我不小心pip install使用了apt-get预先安装的软件包,会发生什么?我是否只需使用最新版本(即可能是我使用 安装的版本pip)?反过来会发生什么?

注意:我不在虚拟环境中使用 Python(只是因为我不知道为什么我应该使用 Python 作为数据分析工具,并且主要尝试使用所有内容的最新版本)。

小智 6

正如 @Timo 在他的评论中提到的,python -c "import sys; print sys.path"将为您提供安装 Python 的 Python 模块加载路径。在相对较新的 16.04 安装中,有 3 个值得注意的目录(在我的总共 10 个目录中):

  • ''(应用程序的目录)
  • '/usr/local/lib/python2.7/dist-packages'(pip 安装模块的位置)
  • '/usr/lib/python2.7/dist-packages'(apt 安装模块的位置)

然而,最需要注意的是“/usr/local/lib/python2.7/dist-packages”的优先级高于“/usr/lib/python2.7/dist-packages”。

如果您首先通过 apt(-get) 安装 Python 包,它将安装到“/usr/lib/python2.7/dist-packages”中。如果您稍后尝试使用 pip 安装该模块,pip 首先会发出警告,指出已满足依赖关系,然后退出;添加 --upgrade 标志将强制安装 pip,将模块安装到“/usr/local/lib/python2.7/dist-packages”中。(请注意输出还表明“/usr/lib/python2.7/dist-packages”中的版本未卸载)然后您可以使用以下命令验证 pip 安装的版本是否是正在使用的版本:python -c "import MODULE; print MODULE.__file__"

因此,这表明通过 pip 安装的软件包将优先于系统安装的软件包,但不会覆盖从 apt(-get) 安装的任何内容。