使用Anaconda编译器在Anaconda中从源代码构建Scipy

2024-10-01 09:42:05 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试从水蟒环境中的源代码构建scipy。但是在就地构建期间,ld会抛出一个错误。在

我创造了一个新的水蟒环境,在一个新的小型水蟒装置。在

conda create -n scipy_env
source activate scipy_env

我安装gcc相关的Anaconda编译器,如Anaconda开发者博客here中所述:

^{2}$

然后,我安装cythonatlasopenblas、和{},这是Scipy开发人员指南中的依赖项部分的要求,以及Scipy参考指南here中的在Linux上从源代码构建页面:

(scipy_env) conda install cython atlas openblas
(scipy_env) conda install numpy

然后我关闭终端并打开一个新的终端并再次激活scipy_env环境。在

我将scipyrepo复制到一个文件夹中

(scipy_env) git clone https://github.com/scipy/scipy.git
(scipy_env) cd ./scipy

最后,我运行一个就地构建

(scipy_env) python setup.py build_ext --inplace

在构建期间的某个时刻,终端打印以下内容。请注意,以下代码块中间的省略号表示许多A4页大小的类似终端输出,为了简洁起见,我删除了它们:

...

/home/aaron/miniconda3/envs/scipy_env/bin/x86_64-conda_cos6-linux-gnu-gfortran -Wall -g -Wl,-O2 -Wl,--sort-common -Wl,--as-needed -Wl,-z,relro -Wl,-z,now -Wl,--disable-new-dtags build/temp.linux-x86_64-3.7/scipy/fftpack/_fftpackmodule.o build/temp.linux-x86_64-3.7/scipy/fftpack/src/zfft.o build/temp.linux-x86_64-3.7/scipy/fftpack/src/drfft.o build/temp.linux-x86_64-3.7/scipy/fftpack/src/zrfft.o build/temp.linux-x86_64-3.7/scipy/fftpack/src/zfftnd.o build/temp.linux-x86_64-3.7/scipy/fftpack/src/dct.o build/temp.linux-x86_64-3.7/scipy/fftpack/src/dst.o build/temp.linux-x86_64-3.7/build/src.linux-x86_64-3.7/scipy/fftpack/fortranobject.o -L/home/aaron/miniconda3/envs/scipy_env/bin/../x86_64-conda_cos6-linux-gnu/sysroot/lib/../lib -L/home/aaron/miniconda3/envs/scipy_env/bin/../x86_64-conda_cos6-linux-gnu/sysroot/lib/../lib -Lbuild/temp.linux-x86_64-3.7 -ldfftpack -lfftpack -lgfortran -o scipy/fftpack/_fftpack.cpython-37m-x86_64-linux-gnu.so -Wl,--version-script=build/temp.linux-x86_64-3.7/link-version-scipy.fftpack._fftpack.map
/home/aaron/miniconda3/envs/scipy_env/bin/../lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/../../../../x86_64-conda_cos6-linux-gnu/bin/ld: /home/aaron/miniconda3/envs/scipy_env/bin/../x86_64-conda_cos6-linux-gnu/sysroot/usr/lib/../lib/Scrt1.o: in function `_start':
/home/rdonnelly/mc/conda-bld/compilers_linux-64_1534865402226/work/.build/src/glibc-2.12.2/csu/../sysdeps/x86_64/elf/start.S:99: undefined reference to `main'
/home/aaron/miniconda3/envs/scipy_env/bin/../lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/../../../../x86_64-conda_cos6-linux-gnu/bin/ld: build/temp.linux-x86_64-3.7/scipy/fftpack/_fftpackmodule.o: in function `f2py_rout__fftpack_destroy_dst1_cache':
_fftpackmodule.c:(.text+0x31): undefined reference to `PyArg_ParseTupleAndKeywords'
/home/aaron/miniconda3/envs/scipy_env/bin/../lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/../../../../x86_64-conda_cos6-linux-gnu/bin/ld: _fftpackmodule.c:(.text+0x3d): undefined reference to `PyErr_Occurred'
/home/aaron/miniconda3/envs/scipy_env/bin/../lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/../../../../x86_64-conda_cos6-linux-gnu/bin/ld: _fftpackmodule.c:(.text+0x7b): undefined reference to `Py_BuildValue'
/home/aaron/miniconda3/envs/scipy_env/bin/../lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/../../../../x86_64-conda_cos6-linux-gnu/bin/ld: build/temp.linux-x86_64-3.7/scipy/fftpack/_fftpackmodule.o: in function `f2py_rout__fftpack_destroy_dst2_cache':
_fftpackmodule.c:(.text+0xd1): undefined reference to `PyArg_ParseTupleAndKeywords'
/home/aaron/miniconda3/envs/scipy_env/bin/../lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/../../../../x86_64-conda_cos6-linux-gnu/bin/ld: _fftpackmodule.c:(.text+0xdd): undefined reference to `PyErr_Occurred'

...

/home/aaron/miniconda3/envs/scipy_env/bin/../lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/../../../../x86_64-conda_cos6-linux-gnu/bin/ld: fortranobject.c:(.text+0x21f8): undefined reference to `PyOS_snprintf'
/home/aaron/miniconda3/envs/scipy_env/bin/../lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/../../../../x86_64-conda_cos6-linux-gnu/bin/ld: build/temp.linux-x86_64-3.7/build/src.linux-x86_64-3.7/scipy/fftpack/fortranobject.o: in function `F2PyCapsule_AsVoidPtr':
fortranobject.c:(.text+0x2238): undefined reference to `PyCapsule_GetPointer'
/home/aaron/miniconda3/envs/scipy_env/bin/../lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/../../../../x86_64-conda_cos6-linux-gnu/bin/ld: fortranobject.c:(.text+0x2257): undefined reference to `PyErr_Clear'
/home/aaron/miniconda3/envs/scipy_env/bin/../lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/../../../../x86_64-conda_cos6-linux-gnu/bin/ld: build/temp.linux-x86_64-3.7/build/src.linux-x86_64-3.7/scipy/fftpack/fortranobject.o: in function `F2PyCapsule_Check':
fortranobject.c:(.text+0x2273): undefined reference to `PyCapsule_Type'
collect2: error: ld returned 1 exit status
error: Command "/home/aaron/miniconda3/envs/scipy_env/bin/x86_64-conda_cos6-linux-gnu-gfortran -Wall -g -Wl,-O2 -Wl,--sort-common -Wl,--as-needed -Wl,-z,relro -Wl,-z,now -Wl,--disable-new-dtags build/temp.linux-x86_64-3.7/scipy/fftpack/_fftpackmodule.o build/temp.linux-x86_64-3.7/scipy/fftpack/src/zfft.o build/temp.linux-x86_64-3.7/scipy/fftpack/src/drfft.o build/temp.linux-x86_64-3.7/scipy/fftpack/src/zrfft.o build/temp.linux-x86_64-3.7/scipy/fftpack/src/zfftnd.o build/temp.linux-x86_64-3.7/scipy/fftpack/src/dct.o build/temp.linux-x86_64-3.7/scipy/fftpack/src/dst.o build/temp.linux-x86_64-3.7/build/src.linux-x86_64-3.7/scipy/fftpack/fortranobject.o -L/home/aaron/miniconda3/envs/scipy_env/bin/../x86_64-conda_cos6-linux-gnu/sysroot/lib/../lib -L/home/aaron/miniconda3/envs/scipy_env/bin/../x86_64-conda_cos6-linux-gnu/sysroot/lib/../lib -Lbuild/temp.linux-x86_64-3.7 -ldfftpack -lfftpack -lgfortran -o scipy/fftpack/_fftpack.cpython-37m-x86_64-linux-gnu.so -Wl,--version-script=build/temp.linux-x86_64-3.7/link-version-scipy.fftpack._fftpack.map" failed with exit status 1

我对C和Fortran编译一无所知,所以我不知道是什么导致了上面的块中抛出错误,或者更重要的是,该如何修复它。在

有人对如何处理这个问题有什么建议吗?在


Tags: gnubuildenvhomebinlinuxlibscipy