我已经建立了一个环境,其中所有软件包都由conda(甚至对于gcc)管理。我要安装的是带有GLPK支持的cvxopt:
CVXOPT_BUILD_GLPK=1 pip install cvxopt
这样做直接导致
src/C/glpk.c:24:18: fatal error: glpk.h: No such file or directory #include <glpk.h> ^ compilation terminated. error: command 'gcc' failed with exit status 1
所以我用conda安装glpk:
conda install -c conda-forge glpk=4.60
然后再试一次:
出现错误:
src/C/umfpack.c:23:21: fatal error: umfpack.h: No such file or directory #include "umfpack.h" ^ compilation terminated. error: command 'gcc' failed with exit status 1
所以我尝试用以下方法解决它:
conda install -c conda-forge scikit-umfpack=0.2.3
所以在这种情况下,CVXOPT_BUILD_GLPK=1 pip install cvxopt成功了
但是,当我尝试运行python程序时:
Traceback (most recent call last): File "my_programme.py", line 19, in <module> from cvxopt import normal, matrix File "/home/me/anaconda2/lib/python2.7/site-packages/cvxopt/__init__.py", line 32, in <module> import cvxopt.base ImportError: /home/me/anaconda2/lib/python2.7/site-packages/cvxopt/base.so: undefined symbol: _gfortran_st_write_done
那我不知道该如何解决。谢谢。我将更喜欢使用conda管理所有程序。
编辑 :之后我尝试了:
pip uninstall cvxopt conda install -c jjhelmus cvxopt_glpk=1.1.6
然后我得到这个错误:
File "my_code.py", line 19, in <module> from cvxopt import normal, matrix File "/home/me/anaconda2/lib/python2.7/site-packages/cvxopt/__init__.py", line 32, in <module> import cvxopt.base ImportError: liblapack.so.3gf: cannot open shared object file: No such file or directory
我真的不知道为什么即使我使用conda统一管理我的包裹后,为什么还要这么复杂…。此外,在我搞砸了所有这些之后…我的系统也变成了越野车。我为所有这一切感到沮丧。
现在…我快要崩溃了......我完全移除了conda并安装了conda clean …然后
conda install -c jjhelmus cvxopt_glpk=1.1.6
运行该程序后,我得到:
Traceback (most recent call last): File "extract_small_confgs_from_GMC.py", line 19, in <module> from cvxopt import normal, matrix File "/home/me/anaconda2/lib/python2.7/site-packages/cvxopt/__init__.py", line 32, in <module> import cvxopt.base ImportError: liblapack.so.3gf: cannot open shared object file: No such file or directory
哦,我的上帝.....
我可以通过以下方式解决我的问题:
conda install -c conda-forge glpk=4.60 conda install -c conda-forge cvxopt=1.1.8
基本上,我们需要使用一致的condo-forge的所有内容。例如,他们的glpk和cvxopt。