【问题标题】:How to make 'pip install' not uninstall other versions?如何使“pip install”不卸载其他版本?
【发布时间】:2015-11-09 16:50:49
【问题描述】:

我正在管理 HPC 上的多个模块,并希望使用 pip 为工具安装一些要求。

我不会使用 virtualenv,因为它们不能很好地与我们的模块系统配合使用。我想安装模块本地版本的包,并在加载模块时正确设置PYTHONPATH,当我安装的包也没有安装在默认的python环境中时,这工作得很好。

我不想在安装模块本地版本时卸载默认的 python 版本的包。

比如一个包需要numpy==1.6,而我使用的python安装的默认版本是1.8.0。当我

pip install --install-option="--prefix=$RE_PYTHON" numpy==1.6

RE_PYTHON 指向模块本地站点包目录的顶部,numpy==1.6 安装正常,然后 pip 继续并开始从我正在使用的 python 树卸载 1.8.0(为什么它想要卸载较新版本超出了我的能力,但即使我在本地安装 numpy==1.10.1),我也想避免这种情况。

如何防止 pip 这样做?真的很烦,一直没能找到不涉及virtualenv的解决方案。

【问题讨论】:

  • 你为什么不想使用 virtualenv?听起来正是这样做的目的。
  • 我使用这个技巧在我的 python 脚本文件夹中安装包的“本地”副本。然后就可以在脚本中“from.import my_local_version”绕过电脑的本地包了。

标签: python pip


【解决方案1】:

您必须通过指定-I 选项(或--ignore-installed)明确告诉pip 忽略当前安装的包。所以你应该使用:

PYTHONUSERBASE=$RE_PYTHON pip install -I --user numpy==1.6

thisIan Bicking 的回答中提到了这一点。

【讨论】:

  • 仅供参考,我注意到当使用系统 pip(v1.1,在旧的 Debian 版本上)来“升级”自身时(即在 /usr/local 中安装新版本以避免覆盖系统文件) 它出于某种原因忽略了--ignore-installed。它只是坚持尝试卸载现有的安装。 (我试过-t /usr/local--install-option="--prefix=/usr/local"。)
猜你喜欢
  • 2015-08-17
  • 2018-07-27
  • 2015-12-17
  • 2017-10-29
  • 2015-11-28
  • 2017-11-10
  • 2018-11-29
  • 2020-12-17
  • 2016-12-20
相关资源
最近更新 更多