安装`conda-forge`包时如何更喜欢`defaults` numpy over`conda-forge` numpy

Bri*_*n B 7 packages numpy conda

我更喜欢使用defaultsContinuum提供的常用频道中的MKL工具链.但是,和许多人一样,我发现自己从conda-forge频道安装了不少套餐.

例如,考虑python-graphviz包.安装命令是

conda install -c conda-forge python-graphviz
Run Code Online (Sandbox Code Playgroud)

这导致一些不希望的依赖变化

The following packages will be UPDATED:

cvxopt:          1.1.7-py27_0          --> 1.1.9-py27_blas_openblas_201  conda-forge [blas_openblas]
gsl:             2.2.1-h8267d9d_2      --> 2.2.1-blas_openblas_2         conda-forge [blas_openblas]
numpy:           1.13.3-py27hbcc08e0_0 --> 1.13.3-py27_blas_openblas_200 conda-forge [blas_openblas]
scikit-learn:    0.19.1-py27h445a80a_0 --> 0.19.1-py27_blas_openblas_200 conda-forge [blas_openblas]
scipy:           0.19.1-py27h1edc525_3 --> 0.19.1-py27_blas_openblas_202 conda-forge [blas_openblas]
Run Code Online (Sandbox Code Playgroud)

我不想更改为OpenBlas numpy,因此我手动处理所有依赖项然后

conda install -c conda-forge --no-deps python-graphviz
Run Code Online (Sandbox Code Playgroud)

这工作正常,但很费力,并会招致错误.

我原以为如果我添加conda-forge了低优先级通道

conda config --append channels conda-forge
Run Code Online (Sandbox Code Playgroud)

然后它会停止尝试覆盖numpy安装,但事实证明这是不真实的.conda config --show正如预期的那样,现在的输出包含

channel_alias: https://conda.anaconda.org
channel_priority: True
channels:
  - defaults
  - conda-forge
Run Code Online (Sandbox Code Playgroud)

但是如果我尝试安装一些东西(没有命令行开关),比方说conda install pycwt,那么我仍然可以

Package plan for installation in environment /conda:

The following NEW packages will be INSTALLED:

  pycwt:        0.3.0a22-py_0         conda-forge
  tqdm:         4.19.4-py27hdfef72e_0            

The following packages will be UPDATED:

  cvxopt:       1.1.7-py27_0                      --> 1.1.9-py27_blas_openblas_201  conda-forge [blas_openblas]
  gsl:          2.2.1-h8267d9d_2                  --> 2.2.1-blas_openblas_2         conda-forge [blas_openblas]
  numpy:        1.13.3-py27hbcc08e0_0             --> 1.13.3-py27_blas_openblas_200 conda-forge [blas_openblas]
  scikit-learn: 0.19.1-py27h445a80a_0             --> 0.19.1-py27_blas_openblas_200 conda-forge [blas_openblas]
  scipy:        0.19.1-py27h1edc525_3             --> 0.19.1-py27_blas_openblas_202 conda-forge [blas_openblas]
Run Code Online (Sandbox Code Playgroud)

有没有办法更喜欢defaultsconda-forge更新时,我安装conda-forge包?

编辑:添加有关conda config输出和非切换行为的更多信息

Pri*_*mer 6

您可能想要使用pinned_packagesconda配置的功能.

通过更改/添加以下行.condarc来手动编辑文件(它的位置可以在输出中看到conda config --show-sources):

pinned_packages:
  - defaults::numpy
Run Code Online (Sandbox Code Playgroud)

或者从命令行:

conda config --add pinned_packages defaults::numpy
Run Code Online (Sandbox Code Playgroud)

这将确保numpy仅从默认通道安装/更新,而不是从conda-forge安装/更新.


dar*_*ith 0

将频道添加到安装命令将使该频道成为最高优先级频道。如果您将conda-forge通道添加到配置的末尾并且未在安装命令中指定它,您将从与其匹配的第一个通道中获取依赖项。

  • @BrianB 就其价值而言,我刚刚在 Windows 系统上全新安装 Anaconda 时遇到了这个问题,尽管我无法在 Linux 或 macOS 上重现它。我的解决方案是在安装命令中指定通道,让它进行降级,然后运行“conda update --all”,这是一个愚蠢的技巧,但很有效。抱歉,我之前无法提供更多帮助! (3认同)