我最近更新到python 3.5.0并想安装cvxopt,到目前为止没有运气。所以我尝试了python 2.7并按照here的说明安装了mingw(4.9.3)并从源代码构建了blas和lapack而没有问题。 我跑的时候
python setup.py build --compiler=mingw32
我得到以下输出:
running build
running build_py
running build_ext
building 'base' extension
C:\minGW\bin\gcc.exe -mdll -O -Wall -IC:\Python27\include -IC:\Python27\
c/C/base.c -o build\temp.win32-2.7\Release\src\c\base.o
C:\minGW\bin\gcc.exe -mdll -O -Wall -IC:\Python27\include -IC:\Python27\
c/C/dense.c -o build\temp.win32-2.7\Release\src\c\dense.o
C:\minGW\bin\gcc.exe -mdll -O -Wall -IC:\Python27\include -IC:\Python27\
c/C/sparse.c -o build\temp.win32-2.7\Release\src\c\sparse.o
src/C/sparse.c: In function 'sparse_concat':
src/C/sparse.c:368:30: warning: variable 'blk_ncols' set but not used [-
but-set-variable]
int_t blk_nrows = 0, blk_ncols = 0;
^
writing build\temp.win32-2.7\Release\src\c\base.def
C:\minGW\bin\dllwrap.exe -mdll -static --entry _DllMain@12 --output-lib
mp.win32-2.7\Release\src\c\libbase.a --def build\temp.win32-2.7\Release\
se.def -s build\temp.win32-2.7\Release\src\c\base.o build\temp.win32-2.7
\src\c\dense.o build\temp.win32-2.7\Release\src\c\sparse.o -Lsrc -LC:\Py
ibs -LC:\Python27\PCbuild -LC:\Python27\PC\VS9.0 -lm -llapack -lblas -lg
-lpython27 -lmsvcr90 -o build\lib.win32-2.7\cvxopt\base.pyd
c:/mingw/bin/../lib/gcc/mingw32/4.9.3\libgfortran.a(write.o):(.text$writ
0xbb): undefined reference to `signbitq'
c:/mingw/bin/../lib/gcc/mingw32/4.9.3\libgfortran.a(write.o):(.text$writ
0xe7): undefined reference to `finiteq'
c:/mingw/bin/../lib/gcc/mingw32/4.9.3\libgfortran.a(write.o):(.text$writ
0x314): undefined reference to `finiteq'
c:/mingw/bin/../lib/gcc/mingw32/4.9.3\libgfortran.a(write.o):(.text$writ
0x7f2): undefined reference to `isnanq'
collect2.exe: error: ld returned 1 exit status
dllwrap: gcc exited with status 1
error: command 'C:\\minGW\\bin\\dllwrap.exe' failed with exit status 1
使用3.5我使用Anaconda。 On this site他们展示了如何通过conda命令安装cvxopt,当我尝试这个时,我得到未知的MS编译器版本1900 错误。 使用此"patch"安装已超过该点,但是对于conda想要安装的所有软件包的错误而结束(输出未包含,因为太长)
这是版本3.5的问题吗?还是mingw?还是64位蟒蛇?我正在尝试安装VC15以查看是否有所改变,但实际上并不知道在哪里或需要注意什么。
编辑: 我仍然不知道究竟是什么导致了这个问题,但是this site的二进制文件,如建议here完全适用于Anaconda 64位和python 3.5(尽管你必须卸载numpy和scipy并使用来自网站的版本)
就minGW而言,它可能不适用于python 3.5,正如评论here中所建议的那样,为什么2.7给出了这些fortran错误,我完全不能说。
答案 0 :(得分:0)
这是一个迟到的回复,我看到你已经通过安装自定义轮子找到了解决问题的方法。但是,我想针对您的具体问题指出另一种选择。由于你似乎正在使用Anaconda运行python 3.5,因此有一个rdonnelly频道可以帮助你。
conda install -c rdonnelly cvxopt=1.1.9
这个解决方案特别方便那些没有准备好像我一样安装自定义numpy和scipy的人,因为他们破坏了我的python安装两次。这是我在win64 py35系统上运行cvxopt的唯一方法。请注意,此软件包是为python 3.5量身定制的,当前的Conda默认安装为3.6。为此,我选择安装较早版本的Conda。