防止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包