防止pip在升级期间删除系统包

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

我也用Python做了很多科学工作,所以我使用pip安装了像numpy,matplotlib等工具 – 这些工具都存在于/usr/local/lib/python2.7并且归我所有(我知道了/usr/local因为我是这台机器上唯一的用户)。 我称之为“本地”Python包。 我在PYTHONPATH中将本地路径放在系统前面,以便我优先加载本地包。

现在,我正在尝试升级使用pip安装的本地软件包之一,并且pip失败,因为它想要在升级过程中卸载从属系统软件包。

我有两个问题,从两端解决问题:

解决此问题的一种方法是获取pip以升级我的本地软件包并忽略系统安装的软件包(如果可能)。 我是否可以阻止pip在本地软件包升级期间尝试卸载系统软件包,但仅限于一个依赖项?

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

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

如果您不希望pip安装或卸载您可以使用的任何依赖项

 pip install --no-deps package_name 

在这种情况下,您需要确保满足您安装的软件包所需的不同依赖项。

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

 pip install -U --no-deps package_name 

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