折腾一天,总结一下:
下载lapack-3.7.1,拷贝install目录下的make.inc.gfortran.到上一级目录,改名make.inc
OPTS = -O2 -frecursive -m64 -fPIC DRVOPTS = $(OPTS) NOOPT = -O0 -frecursive -m64 -fPIC
加上m64,fPIC对于amd64没用,加上无妨
make
然后到CBLAS目录下make,生成libcblas.a
在scipy源代码目录site.cfg文件中加入
[cblas] library_dirs = /home/wuzhiqiao/lapack-3.7.1/lapack-3.7.1 blas_libs = cblas extra_compile_args =-m64 [blas] library_dirs = /home/wuzhiqiao/lapack-3.7.1/lapack-3.7.1 blas_libs = blas extra_compile_args =-m64 [lapack] library_dirs = /home/wuzhiqiao/lapack-3.7.1/lapack-3.7.1 lapack_libs = lapack extra_compile_args =-m64
再修改F:\cygwin64\lib\python2.7\site-packages\numpy\distutils\system_info.py文件
加入extra_preargs="-m64"
def has_cblas(self, info): # primitive cblas check by looking for the header and trying to link # cblas or blas res = False c = distutils.ccompiler.new_compiler() c.customize('') tmpdir = tempfile.mkdtemp() s = """#include <cblas.h> int main(int argc, const char *argv[]) { double a[4] = {1,2,3,4}; double b[4] = {5,6,7,8}; return cblas_ddot(4, a, 1, b, 1) > 10; }""" src = os.path.join(tmpdir, 'source.c') try: with open(src, 'wt') as f: f.write(s) try: # check we can compile (find headers) obj = c.compile([src], output_dir=tmpdir, include_dirs=self.get_include_dirs(), extra_preargs="-m64")
最后在scipy根目录下python setup.py install,这样可以不用编译MKL