I need to build NumPy on a cluster here at work (I don’t have root access). I’ve compiled my own version of Python 2.7.3 (with –enable-shared), and because I don’t have root access, Python lives in a non-standard location. I’m having an issue compiling NumPy, though. This is what I get:
gfairchild@cj-fe1 ~/code/packages/src/numpy-1.6.2> export CFLAGS="-L/usr/projects/infmodels/gfairchild/packages/lib"
gfairchild@cj-fe1 ~/code/packages/src/numpy-1.6.2> python setup.py build --fcompiler=gnu95
...
...
...
compile options: '-Inumpy/core/src/private -Inumpy/core/src -Inumpy/core -Inumpy/core/src/npymath -Inumpy/core/src/multiarray -Inumpy/core/src/umath -Inumpy/core/include -I/usr/projects/infmodels/gfairchild/packages/stow/Python-2.7.3/include/python2.7 -c'
gcc: _configtest.c
gcc -pthread _configtest.o -o _configtest
_configtest
failure.
removing: _configtest.c _configtest.o _configtest
building data_files sources
build_src: building npy-pkg config files
running build_py
copying numpy/version.py -> build/lib.linux-x86_64-2.7/numpy
copying build/src.linux-x86_64-2.7/numpy/__config__.py -> build/lib.linux-x86_64-2.7/numpy
copying build/src.linux-x86_64-2.7/numpy/distutils/__config__.py -> build/lib.linux-x86_64-2.7/numpy/distutils
running build_clib
customize UnixCCompiler
customize UnixCCompiler using build_clib
running build_ext
customize UnixCCompiler
customize UnixCCompiler using build_ext
customize Gnu95FCompiler
customize Gnu95FCompiler using build_ext
building 'numpy.linalg.lapack_lite' extension
compiling C sources
C compiler: gcc -pthread -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -L/usr/projects/infmodels/gfairchild/packages/lib -fPIC
compile options: '-DATLAS_INFO="\"3.6.0\"" -I/usr/include/atlas -Inumpy/core/include -Ibuild/src.linux-x86_64-2.7/numpy/core/include/numpy -Inumpy/core/src/private -Inumpy/core/src -Inumpy/core -Inumpy/core/src/npymath -Inumpy/core/src/multiarray -Inumpy/core/src/umath -Inumpy/core/include -I/usr/projects/infmodels/gfairchild/packages/stow/Python-2.7.3/include/python2.7 -Ibuild/src.linux-x86_64-2.7/numpy/core/src/multiarray -Ibuild/src.linux-x86_64-2.7/numpy/core/src/umath -c'
gcc: numpy/linalg/lapack_litemodule.c
gcc: numpy/linalg/python_xerbla.c
/usr/bin/gfortran -Wall -Wall -shared build/temp.linux-x86_64-2.7/numpy/linalg/lapack_litemodule.o build/temp.linux-x86_64-2.7/numpy/linalg/python_xerbla.o -L/usr/lib64/atlas -L. -Lbuild/temp.linux-x86_64-2.7 -llapack -lf77blas -lcblas -latlas -lpython2.7 -lgfortran -o build/lib.linux-x86_64-2.7/numpy/linalg/lapack_lite.so
/usr/bin/ld: cannot find -lpython2.7
collect2: ld returned 1 exit status
/usr/bin/ld: cannot find -lpython2.7collect2: ld returned 1 exit status
error: Command "/usr/bin/gfortran -Wall -Wall -shared build/temp.linux-x86_64-2.7/numpy/linalg/lapack_litemodule.o build/temp.linux-x86_64-2.7/numpy/linalg/python_xerbla.o -L/usr/lib64/atlas -L. -Lbuild/temp.linux-x86_64-2.7 -llapack -lf77blas -lcblas -latlas -lpython2.7 -lgfortran -o build/lib.linux-x86_64-2.7/numpy/linalg/lapack_lite.so" failed with exit status 1
For some reason it’s not finding libpython2.7.so even thought it’s in the directory specified by CFLAGS. I even added the directory to LD_LIBRARY_PATH:
gfairchild@cj-fe1 ~/code/packages/lib> echo $LD_LIBRARY_PATH
/usr/projects/infmodels/gfairchild/packages/lib:/usr/projects/infmodels/ep_packages/db-4.3.28/lib:/usr/projects/infmodels/ep_packages/boost/lib:/usr/projects/infmodels/ep_packages/log4cpp/lib:/usr/projects/infmodels/gfairchild/packages/lib:/usr/projects/infmodels/ep_packages/db-4.3.28/lib:/usr/projects/infmodels/ep_packages/boost/lib:/usr/projects/infmodels/ep_packages/log4cpp/lib:/opt/OpenMPI/openmpi-1.4.3-gcc/lib64
What can I do to get this to work? Thanks!
I just fixed it! Looking in the numpy-1.6.2 directory, I saw a file called
site.cfg.example. Looking inside, I saw that you can specify library and include directories. I simply created a file calledsite.cfgwhose contents are the following:That was all it took for it to finish building. m01’s solution (adding the path to
LDFLAGS) got me further, but it still errored out. Thesite.cfgfile allowed it to finish building.