4

我正在尝试通过 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_PATHLD_RUN_PATH但这些似乎都不会影响用于构建模块的gcc命令行选项。pip

谁能告诉我如何给图书馆搜索路径pip?有没有更好的办法?

4

1 回答 1

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_PATHLD_RUN_PATH确定它们是否仍然需要LD_FLAGS. 但是,我确实确定肯定需要一个共享的 LAPACK 库。cvxopt不会链接到静态库。

于 2014-04-09T00:16:06.567 回答