防止 pip 在升级过程中删除系统包

防止 pip 在升级过程中删除系统包

我有一个相当简单的 Ubuntu (13.04) 桌面安装,它附带了几个 Ubuntu 打包的 Python 实用程序 - 这些实用程序位于 root 中/usr/lib/python2.7并由 root 拥有。我称它们为“系统”Python 包。

我也用 Python 做了很多科学工作,所以我安装了 numpy、matplotlib 等工具pip——这些工具/usr/local/lib/python2.7位于我这里并归我所有(我chown之所以这样称呼/usr/local,是因为我是这台机器上唯一的用户)。我称这些为“本地”Python 包。我将本地路径放在系统路径前面,这样PYTHONPATH我就可以优先加载本地包。

现在,我尝试升级使用安装的本地软件包之一pip,但pip失败了,因为它想在升级过程中卸载依赖系统软件包。

我对此有两个问题,分别从各个角度解决问题:

解决此问题的一种方法是pip升级我的本地软件包并忽略系统安装的软件包(如果可能的话)。我可以防止pip在本地包升级期间尝试卸载系统包,但只针对一个依赖项吗?

另一种方法是安装pip软件包的较新版本,然后使用该版本来满足apt相关工具中的依赖关系。有没有办法告诉 Ubuntu 一个pip已安装的包将满足apt依赖关系?

(我熟悉虚拟环境,但在这台机器上我只使用这一个环境,所以我真的想避免跟踪我是否在正确的虚拟环境中工作。)

答案1

如果你不想 pip 安装或卸载任何依赖项,你可以使用

pip install --no-deps package_name

请注意,在这种情况下,您有责任确保满足所安装软件包所需的不同依赖项。

要在升级包时使用它,请使用:

pip install -U --no-deps package_name

对于类似的问题,请参见升级时拖动已安装的 Python 包

相关内容