4

我最近更新到 python 3.5.0 并想安装 cvxopt,到目前为止没有运气。所以我尝试了 python 2.7 并按照这里的说明安装了 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。在这个站点上,他们展示了如何通过 conda 命令安装 cvxopt,当我尝试这个时,我得到了未知的 MS 编译器版本 1900错误。使用这个“补丁”安装可以通过那个点,但是所有 conda 想要安装的包都以错误结束(不包括输出,因为太长了)

这是3.5版的问题吗?还是铭文?还是 64 位 anaconda?我正在尝试安装 VC15 以查看是否会改变事情,但真的不知道在哪里或要注意什么。

编辑:我仍然不知道究竟是什么导致了这个问题,但是来自这个站点的二进制文件,正如这里所建议的,非常适用于 Anaconda 64 位和 python 3.5(尽管你必须卸载 numpy 和 scipy 并使用该站点的版本)

至于 minGW,它可能还不能与 python 3.5 一起使用,正如这里的评论中所建议的那样,为什么 2.7 给出了这些 fortran 错误,我根本不能说。

4

1 回答 1

0

这是一个迟到的回复,我看到您已经通过安装定制轮子找到了解决您的问题的方法。但是,我想针对您的具体问题指出另一种选择。由于您似乎正在使用 Anaconda 运行 python 3.5,因此有一个 rdonnelly 频道可能会帮助您。

conda install -c rdonnelly cvxopt=1.1.9

这个解决方案对于像我这样没有准备好安装自定义 numpy 和 scipy 的人来说特别方便,因为他们两次破坏了我的 python 安装。这是我让 cvxopt 在我的 win64 py35 系统上运行的唯一方法。请注意,此包是为 python 3.5 量身定制的,当前的 Conda 将默认安装 3.6。为此,我选择安装旧版本的 Conda。

于 2017-06-03T15:35:28.753 回答