【问题标题】:Different custom install locations for pip2 and pip3pip2 和 pip3 的不同自定义安装位置
【发布时间】:2019-02-05 13:03:12
【问题描述】:

使用带有 --user 标志的 pip 时,默认安装位置是 ~/.local/lib/pythonX.Y/site-packages,其中 X.Y 指定 python 的版本。这允许将使用 pip2 安装的软件包与通过 pip3 安装的软件包分开。

但是,当使用 pip.conf 文件指定目标安装目录时,我只看到了这样的全局设置:

[global]
target=/data/user/pip

这可行,但不会将 pip2 安装的软件包与 pip3 安装的软件包分开,这可能会导致问题。有没有办法为通过 pip2 安装的包和通过 pip3 安装的包指定不同的位置?

【问题讨论】:

  • 你为什么不用virtualenv?有了它,您将能够为每个项目安装包(无论是 python2 还是 python3)
  • @EugenePrikazchikov 我确实非常广泛地使用 virtualenv,但有些包我想总是安装

标签: python pip


【解决方案1】:

不幸的是,在pip 配置中无法处理特定于版本的内容。 The current decision about this is

...这似乎不是我们真正需要的东西。

但是,用户安装目标实际上不是通过--target配置的,而是通过PYTHONUSERBASE环境变量配置的。这意味着您可以从 env 传递用户群,例如 PYTHONUSERBASE=/some/dir pip install --user pkgname。如果您想保留自定义用户基础目录,我会使用别名。 bash 的示例:在您的 .bashrc/.bash_profile 中,添加:

alias pip2='PYTHONUSERBASE=/tmp/pip2 pip2'
alias pip3='PYTHONUSERBASE=/tmp/pip3 pip3'
alias pip3.7='PYTHONUSERBASE=/tmp/pip3.7 pip3.7'
# etc

保存文件,重新加载

source ~/.bashrc

source ~/.bash_profile

或者干脆打开一个新终端。现在

$ pip2 install --user pkgname

将安装到/tmp/pip2 等。

【讨论】:

  • pip.conf 文件看起来更干净,但似乎我被否决了,所以这可以解决问题。谢谢!
猜你喜欢
  • 2021-08-19
  • 2018-05-17
  • 1970-01-01
  • 1970-01-01
  • 2018-03-24
  • 1970-01-01
  • 2015-06-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多