Python 不使用英特尔MKL/BLAS/ATLAS/LAPACK编译numpy

Python 不使用英特尔MKL/BLAS/ATLAS/LAPACK编译numpy,python,numpy,py2exe,lapack,blas,Python,Numpy,Py2exe,Lapack,Blas,我正在使用py2exe转换一个使用numpy的脚本,并得到一个非常大的结果文件夹,似乎很多大文件都来自numpy包中我没有使用的部分,例如numpy.linalg 为了减小创建的文件夹的大小,我一直认为我应该在没有英特尔MKL/BLAS/ATLAS/LAPACK的情况下编译numpy 我该如何改变 编辑 在C:\Python27\Lib\site packages\numpy\linalg中,我找到了以下文件:\u umath\u linalg.pyd(34MB)和lapack\u lite.p

我正在使用
py2exe
转换一个使用
numpy
的脚本,并得到一个非常大的结果文件夹,似乎很多大文件都来自
numpy
包中我没有使用的部分,例如
numpy.linalg

为了减小创建的文件夹的大小,我一直认为我应该在没有英特尔MKL/BLAS/ATLAS/LAPACK的情况下编译
numpy

我该如何改变

编辑
C:\Python27\Lib\site packages\numpy\linalg
中,我找到了以下文件:
\u umath\u linalg.pyd
(34MB)和
lapack\u lite.pyd
(18MB),它们在使用
py2exe
时被复制到分发文件夹中。如果可能的话,我希望在仍然能够使用
numpy
数组的情况下消除对这些数组的依赖。包含的另一个大文件位于
C:\Python27\Lib\site packages\numpy\core
中,名为
\u dotblas.pyd
(12MB)。是否也可以将其删除?

根据:

禁用ATLAS和其他加速图书馆 可以在Numpy中使用ATLAS和其他加速库 通过以下方式禁用:

  BLAS=None LAPACK=None ATLAS=None python setup.py build
然而,这些信息似乎已经过时了,因为我发现即使使用这些选项,numpy v1.9.2仍然会自动查找
libopenblas。因此

numpy_source_dir/$ BLAS=None LAPACK=None ATLAS=None python setup.py config
...
openblas_info:
  FOUND:
    libraries = ['openblas', 'openblas']
    library_dirs = ['/opt/OpenBLAS/lib']
    language = f77

  FOUND:
    libraries = ['openblas', 'openblas']
    library_dirs = ['/opt/OpenBLAS/lib']
    language = f77
...
一种解决方法是将
site.cfg.example
复制到
site.cfg
,然后对其进行编辑,使相关BLAS/LAPACK库的路径无效:

[openblas]
libraries =
library_dirs =
include_dirs =
当您随后调用
BLAS=None LAPACK=None ATLAS=None python setup.py config
时,您应该会得到一个包含以下内容的输出:

...
openblas_info:
/home/alistair/src/python/numpy/numpy/distutils/system_info.py:594: UserWarning: Specified path  is invalid.
  warnings.warn('Specified path %s is invalid.' % d)
  libraries  not found in []
  NOT AVAILABLE
...
我希望同样的方法也适用于ATLAS和MKL,尽管我没有安装这些库来进行适当的测试

当然,您应该知道,没有加速的BLAS/LAPACK库将对线性代数运算的性能产生很大的不利影响


更新 正如下面的评论中提到的,您实际上并没有“编译”当前版本的numpy,而是从二进制发行版安装的。我上面给出的方法要求您从源代码构建numpy,这在Windows中不是一件容易的事情(尽管有官方的说明)


一个更简单的选择是安装Christoph Gohlke网站上提供的
未优化的
numpy二进制文件。

对不起,我看过文档,但我甚至不理解它的意思,它说可以通过
BLAS=None-LAPACK=None-ATLAS=None-python-setup.py-build禁用它-我以为这意味着在命令行中键入它,但这不起作用。另外,在哪里可以找到
site.cfg.example
?我根本不使用任何线性代数模块,只使用数组,我认为数组不会受到影响(至少不会太大?
setup.py
site.cfg)。示例
是numpy源目录中的文件。你在用什么平台?您目前如何构建numpy?我使用Windows 10,目前已安装了
numpy
,这是我很久以前安装的。我想在重新安装新的
site.cfg
文件之前需要卸载它吗?或者,在缺少LAPACK库的情况下,我是否可以用其他名称安装它?是的,您可以。更重要的是:您最初是如何安装numpy的?鉴于您使用的是Windows,我敢打赌您可能使用了
.exe
安装程序。然而,为了在没有BLAS/LAPACK的情况下重建numpy(如我的回答所示),您需要能够从源代码编译numpy。这在Windows中不是一件容易的事情(尽管有官方的说明)。您最好的选择可能是从Christoph Gohlke提供的未优化的
二进制文件之一重新安装numpy。