Conda强迫numpy和scipy从Openblas降级为不工作的MKL版本

时间:2018-07-25 10:33:50

标签: numpy conda blas intel-mkl

最近,每当我尝试通过conda安装某些东西时,都会得到以下信息:

Fetching package metadata ...............
Solving package specifications: .

Package plan for installation in environment /Users/askates/anaconda3/envs/fastai:

The following packages will be DOWNGRADED:

    blas:         1.1-openblas                          conda-forge --> 1.0-mkl
    numpy:        1.14.5-py35_blas_openblashd3ea46f_201 conda-forge [blas_openblas] --> 1.14.3-py35h9bb19eb_2
    scikit-learn: 0.19.2-py35_blas_openblas_200         conda-forge [blas_openblas] --> 0.19.1-py35h2b554eb_0
    scipy:        1.1.0-py35_blas_openblashd3ea46f_201  conda-forge [blas_openblas] --> 1.1.0-py35hcaad992_0

如果我说“是”,然后尝试使用numpy,则会出现以下错误:

$ python
Python 3.5.5 | packaged by conda-forge | (default, Jul 23 2018, 23:45:11)
[GCC 4.2.1 Compatible Apple LLVM 6.1.0 (clang-602.0.53)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import numpy as np
>>> np.__version__
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: module 'numpy' has no attribute '__version__'

为什么要这样做?我一直在使用标志--no-deps来解决这个问题,但这是一个糟糕的解决方法。它可以升级回(正常工作的)openblas numpy,但是如果我尝试安装其他东西,则会再次执行相同的操作。

1 个答案:

答案 0 :(得分:1)

conda-forge仓库使用openblas BLAS实施,而Anaconda仓库使用英特尔的MKL。从conda-forge安装您的软件包时,它似乎需要其他依赖项才能切换到openblas,但这样做没有成功。有时候,当conda出色的依赖项管理做的不是那么出色时,我会遇到这样的情况。通常,我会通过消除环境并从头开始创建新环境来解决它。在这种情况下,我可能首先尝试从Anaconda尝试此命令,以确保正确安装了openblas。

conda install nomkl numpy scipy scikit-learn numexpr

Relavent Anaconda MKL文档:https://docs.continuum.io/mkl-optimizations/