我试图通过pip将python包cvxopt安装到Centos 6系统的虚拟环境中。
由于lapack是先决条件,并且由于我没有超级用户访问系统,因此我使用以下方法在本地安装了lapack:
$ cmake -DCMAKE_INSTALL_PREFIX=/home/tom .
$ make install
我注意到此步骤liblapack.a
位于我的本地lib目录/home/tom/lib
之后,正如预期的那样。
但是,当我激活我的虚拟环境并运行pip install cvxopt
时,我收到以下错误:
<snip>
gcc -pthread -shared
build/temp.linux-x86_64-2.7/src/C/base.o
build/temp.linux-x86_64-2.7/src/C/dense.o
build/temp.linux-x86_64-2.7/src/C/sparse.o
-L/usr/lib -L/public/apps/python/2.7.4/lib
-lm -llapack -lblas -lpython2.7 -o build/lib.linux-x86_64-2.7/cvxopt/base.so
/usr/bin/ld: cannot find -llapack
collect2: ld returned 1 exit status
error: command 'gcc' failed with exit status 1
我已尝试将/home/tom/lib
添加到LD_LIBRARY_PATH
和LD_RUN_PATH
,但这些似乎都不会影响gcc
命令行选项pip
用于构建模块。
有谁能告诉我如何将图书馆搜索路径提供给pip
?还有更好的方法吗?
答案 0 :(得分:1)
经过一些实验,我能够解决问题。我要做的第一件事就是为LAPACK启用共享库:
~/src/lapack-3.5.0 $ cmake -DBUILD_SHARED_LIBS=ON -DCMAKE_INSTALL_PREFIX=/home/tom .
~/src/lapack-3.5.0 $ make install
然后我导出了LD_FLAGS以包含正确的库搜索路径:
export LD_FLAGS="-L/home/tom/lib"
然后我重新尝试从源代码安装cvxopt
到虚拟环境中:
~/src/cvxopt-1.1.6 $ . venv/bin/activate
~/src/cvxopt-1.1.6 (venv)$ python setup.py build install
我没有尝试LD_LIBRARY_PATH
或LD_RUN_PATH
来确定LD_FLAGS
是否还需要它们。但是,我确实确定需要一个共享的LAPACK库; cvxopt
不会链接到静态库。