Windows Scipy 安装:未找到 Lapack/Blas 资源

178

我正在尝试将Python以及一系列的软件包安装到一台64位的Windows 7桌面电脑上。我已经安装了Python 3.4,安装了Microsoft Visual Studio C++,并成功地安装了NumPy、Pandas等几个软件包。在尝试安装SciPy时,我遇到了以下错误;

numpy.distutils.system_info.NotFoundError: no lapack/blas resources found

我正在使用离线pip安装,我使用的安装命令是:

pip install --no-index --find-links="S:\python\scipy 0.15.0" scipy

我已经阅读了这里关于需要编译器的帖子,如果我理解正确的话,这是VS C++编译器。我正在使用2010版本,因为我正在使用Python 3.4。这对其他软件包有效。

我必须使用Windows二进制文件吗?还是有办法让pip install工作?

非常感谢您的帮助。


4
我认为需要一个Fortran编译器。但是如果接受预编译二进制文件,您可以使用Christoph Gohlke的numpyscipy轮包并通过pip安装。 - Eryk Sun
谢谢Eryksun,我正在下载二进制文件以查看是否解决了问题。 - tjb305
尝试使用py -3.4 -m pip install SomePackage.whl进行安装。 - Eryk Sun
2
我也遇到了这个问题。我无法让pip工作,但是这个方法对我有效(在Windows上):http://sourceforge.net/projects/scipy/files/scipy/ - MackM
在安装 scipy 之前,请执行以下命令:pip install numpy mkl - JeeyCi
显示剩余2条评论
17个回答

125

以下链接应该可以解决所有与Windows和SciPy相关的问题,只需选择适当的下载即可。我能够轻松地通过pip安装包。我尝试的其他所有解决方案都给了我很大的头痛。

来源:http://www.lfd.uci.edu/~gohlke/pythonlibs/#scipy

命令:

 pip install [Local File Location]\[Your specific file such as scipy-0.16.0-cp27-none-win_amd64.whl]

这假设您已经安装了以下内容:

  1. 使用Python工具安装Visual Studio 2015/2013
    (2015的安装选项中已经整合了)

  2. 为Python安装Visual Studio C++编译器
    来源:http://www.microsoft.com/en-us/download/details.aspx?id=44266
    文件名: VCForPython27.msi

  3. 安装所需版本的Python
    来源:python.org
    文件名(例如):python-2.7.10.amd64.msi


9
@Nozdrum和那些想使用这种方法的人,你们只需要在安装scipy之前安装numpy+mkl,就可以访问blas了。 - Holt
1
此外,您可能希望使用与@Holt指向的相同站点提供的SciPy安装程序。我不得不使用Numpy+MKL和WHL文件中提供的SciPy才能使其正常工作。 - Jesuisme
2
我理解这个解决方案只适用于Python 2.7?看起来截至2016年8月,没有针对Python 3的编译器 - geneorama
2
这个像魔法一样好用。您可能需要注意文件名中的cp27指的是.whl所适用的Python版本,因此如果您正在运行Python 3.5,则下载cp35,2.7则下载cp27等等。 - Alexander Micklewright
2
我只是想强调@AlexanderMicklewright所写的内容。对我来说,cpXX指的是(C)Python的版本X.X并不明显。虽然我正在运行Python 3.5,但我隐含地选择了最高版本cp36。 - Czechnology
显示剩余3条评论

98

我的Python版本是2.7.10,64位Windows 7操作系统。

  1. http://www.lfd.uci.edu/~gohlke/pythonlibs/#scipy下载scipy-0.18.0-cp27-cp27m-win_amd64.whl
  2. 打开cmd命令行窗口。
  3. 确保scipy-0.18.0-cp27-cp27m-win_amd64.whlcmd的当前目录中,然后输入pip install scipy-0.18.0-cp27-cp27m-win_amd64.whl

安装成功!


17
这应该被标记为答案;它起作用并且是最没有痛苦的安装方法。 - Tensigh
5
也适用于Python 3.6和Windows 10。 - user4748790
你的解决方案同样适用于Python 3.5和Windows 10。 - Nicola
现在是scipy-0.19.1版本。可能还需要以同样的方式安装numpy+mkl,但不是通过pip install安装。 - Randel
2
我正在使用Python2.7和AMD64,但出现了这个错误:“scipy-1.0.0-cp27-cp27m-win_amd64.whl不支持此平台。” 有什么建议吗? - user3768495
显示剩余2条评论

36

解决在 Windows 7 64 位系统上安装 SciPy 时缺少 BLAS/LAPACK 库的问题,请参考以下链接:

http://www.scipy.org/scipylib/building/windows.html

安装 Anaconda 要简单得多,但是如果不付费,您仍将无法获得 Intel MKL 或 GPU 支持(它们分别包含在 Anaconda 的 MKL 优化和 Accelerate 插件中 - 我不确定它们是否使用 PLASMA 和 MAGMA)。通过使用 MKL 优化,numpy 在大型矩阵计算方面的性能已经比 IDL 提升了 10 倍。MATLAB 内部使用 Intel MKL 库并支持 GPU 计算,因此如果您是学生,则最好使用 MATLAB(Matlab 价格为 $50 + 并行计算工具箱价格为 $10)。如果您获得了 Intel Parallel Studio 的免费试用版,则该软件包已附带 MKL 库以及 C++ 和 FORTRAN 编译器,如果您需要在 Windows 上安装 BLAS 和 LAPACK 来自 MKL 或 ATLAS,这些工具非常实用:

http://icl.cs.utk.edu/lapack-for-windows/lapack/

Parallel Studio 还附带了 Intel MPI 库,适用于群集计算应用和最新的 Xeon 处理器。虽然使用 MKL 优化构建 BLAS 和 LAPACK 的过程并不简单,但是对于 Python 和 R 来说,这样做的好处相当大,正如在这个 Intel 网络研讨会中所述:

https://software.intel.com/en-us/articles/powered-by-mkl-accelerating-numpy-and-scipy-performance-with-intel-mkl-python

Anaconda 和 Enthought 利用使此功能及其他一些功能更易于部署而构建了业务。但是,对于愿意付出一点工作(和一点学习)的人来说,它是免费提供的。

对于使用 R 的用户,您现在可以通过 Revolution Analytics 提供的 R Open 免费获得 MKL 优化的 BLAS 和 LAPACK。

编辑:Anaconda Python 现在已经配备了 MKL 优化,并且通过 Intel Python 发行版支持许多其他 Intel 库优化。但是,在 Accelerate 库中 Anaconda 的 GPU 支持(以前称为 NumbaPro)仍然需要超过 10,000 美元!最好的替代方案可能是 PyCUDA 和 scikit-cuda,因为 copperhead(本质上是 Anaconda Accelerate 的免费版本)不幸地在五年前停止了开发。如果有人想接手,可以在这里找到它。


http://icl.cs.utk.edu/lapack-for-windows/lapack/ 的唯一问题是它很令人困惑。有没有人有关于如何处理它的提示? - gseattle
2
简短回答:使用Anaconda。 - jordiburgos
我使用Anaconda,但仍然出现错误。我不得不下载包含mkl的whl文件并安装它才能使其正常工作。(请参见下面Jaanus的答案:普通的numpy是不够的) - marts
1
2017年 - 我使用这里的方法使其工作。一旦你理解了它,它并不太难,但它并不像应该那样直截了当。 - Jonathan Porter
第一个链接已经失效了。我认为正确的链接应该是http://scipy.github.io/devdocs/building/windows.html。 - ChickenFeet

29

很抱歉打扰,但这是谷歌搜索结果的第一篇文章。以下是对我有效的解决办法:

  1. http://www.lfd.uci.edu/~gohlke/pythonlibs/#numpy下载与你的Python版本相同的numpy+mkl wheel包(通过使用python -V命令检查Python版本)。例如,如果你的Python版本为3.5.2,则下载显示为cp35的wheel包。

  2. 打开命令提示符并进入下载wheel包的文件夹。运行命令:pip install [wheel包的文件名]

  3. http://www.lfd.uci.edu/~gohlke/pythonlibs/#scipy下载SciPy wheel包(类似于上一步骤)。

  4. 如上所述,pip install [wheel包的文件名]


完全可以回答已经过期的问题。事实上,每当新用户这样做时,我们都会审核它。 - Nissa
2
这对我来说在2017年1月8日适用于Windows 8 64位上的Python 3.5 32位。 - user4774787
1
感谢,这适用于Python 3.6与numpy 1.13.1 + mkl、pandas 0.20.3、scikit-learn 0.18.2和scipy 0.19.1。 - zina
1
这个在我使用的Windows 10 x64上,Python 3.6.2版本中有效。 - Jeff Lindborg

20

我按照以下顺序使一切正常。第二点是最重要的。Scipy需要 Numpy+MKL,而不仅仅是普通的 Numpy

  1. 安装Python 3.5
  2. pip install "file path" (从这里下载Numpy + MKL轮子:http://www.lfd.uci.edu/~gohlke/pythonlibs/#numpy
  3. pip install scipy

7
好的,我完成了1)和2)步骤,但在第三步中,我仍然遇到了相同的错误。因此,在完成1)和2)步骤后,我不得不手动从这里下载Scipy.whl包:http://www.lfd.uci.edu/~gohlke/pythonlibs/#scipy并使用pip install "scipy下载路径"进行安装。现在一切都很好! - Geraldo Neto

8
您可能安装了太新(不支持的)Python 3.x。
此页面提供的解决方案过于复杂。大多数numpy / scipy用户不需要编译他们的numpy安装,也不需要依赖第三方“numpy+mkl”轮子。

下载编译器是一种反模式,你不想构建numpy,只想使用它。 [github.com/numpy]

解决方案

  • 一旦您安装了支持的Python版本,请使用以下命令删除无法工作的numpy安装:
pip uninstall numpy

使用以下命令安装scipy:

pip install scipy --only-binary numpy
  • --only-binary选项将强制安装numpy的二进制wheel(.whl)版本。如果失败,可能是因为你使用了太新的(还不支持的)python版本。

  • 如果你安装了多个python版本,你可以通过以下方式确保pip安装你想要的python版本:

<path_to_python_executable> -m pip install <X> 

不再使用 pip install <X>

为什么会出现这种情况?

  • Scipy 依赖于 numpy,可以从setup.py或者在 pip 安装日志中看到。
  • 如果你的 Python 安装版本太新(不被支持),则在 pip 存储库中没有构建好的 wheel (.whl),只有 tarballs (.tar.gz),在此情况下需要用户机器在安装过程中编译一些 C++ 代码。另请参阅:Python packaging: wheels vs tarball (tar.gz)

附录

  • 查看https://pypi.org/project/numpy/以获取支持的Python版本列表。当前(2020-11-04),最新支持的Python版本为Python 3.9,使用numpy 1.19.3或更高版本时,使用Python 3.8numpy 1.19.2。(有关旧版numpy版本的兼容性,请参见numpy发行说明
  • 如果您在Windows上并且看到pip尝试安装numpy-<x>.tag.gz,则知道它可能不起作用。相反,请尝试较旧版本的Python。您希望看到pip为Windows安装numpy的二进制轮(numpy-<x>.whl)。您可以在此处检查pip可用的numpy车轮here

5
如果你正在使用Windows和Visual Studio 2015,

输入以下命令

  • "conda install numpy"
  • "conda install pandas"
  • "conda install scipy"

3

简单快速在Windows上安装Scipy

  1. http://www.lfd.uci.edu/~gohlke/pythonlibs/#scipy 下载适用于您的Python版本的正确Scipy软件包(例如,适用于python 3.5和Windows x64的正确软件包是 scipy-0.19.1-cp35-cp35m-win_amd64.whl)。
  2. 在包含已下载Scipy软件包的目录中打开 cmd
  3. 键入 pip install <<your-scipy-package-name>> (例如,pip install scipy-0.19.1-cp35-cp35m-win_amd64.whl )。

5
当我进行操作时,出现了“scipy-0.19.1-cp36-cp36m-win_amd64.whl不支持此平台”的提示。 - demented hedgehog
1
对我来说有效:pip install https://download.lfd.uci.edu/pythonlibs/z2tqcw5k/scipy-1.5.3-cp39-cp39-win_amd64.whl - 4F2E4A2E

2

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接