简体   繁体   中英

Python pip install cvxopt error: command 'C:\\Program Files (x86)\\Microsoft Visual Studio 14.0\\VC\\BIN\\x86_amd64\\cl.exe' failed with exit status 2

Trying to install cvxopt using "pip install". Using Window 10, Python 3.6.4 (64-bit), and have already installed Microsoft Build Tools 2015 and Visual Studio 14.0. I have also directly downloaded the module from PyPI with no luck. Needing this for optimisation tutorial so any suggestions? This is the command line:

C:\>pip install cvxopt
Collecting cvxopt
  Using cached cvxopt-1.1.9.tar.gz
Installing collected packages: cvxopt
  Running setup.py install for cvxopt ... error
Complete output from command c:\python36\python.exe -u -c "import setuptools, tokenize;__file__='C:\\Users\\Clayton\\AppData\\Local\\Temp\\pip-build-81vbp793\\cvxopt\\setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __file__, 'exec'))" install --record C:\Users\Clayton\AppData\Local\Temp\pip-xcv57jyr-record\install-record.txt --single-version-externally-managed --compile:
running install
running build
running build_py
creating build
creating build\lib.win-amd64-3.6
creating build\lib.win-amd64-3.6\cvxopt
copying src\python\coneprog.py -> build\lib.win-amd64-3.6\cvxopt
copying src\python\cvxprog.py -> build\lib.win-amd64-3.6\cvxopt
copying src\python\info.py -> build\lib.win-amd64-3.6\cvxopt
copying src\python\misc.py -> build\lib.win-amd64-3.6\cvxopt
copying src\python\modeling.py -> build\lib.win-amd64-3.6\cvxopt
copying src\python\msk.py -> build\lib.win-amd64-3.6\cvxopt
copying src\python\printing.py -> build\lib.win-amd64-3.6\cvxopt
copying src\python\solvers.py -> build\lib.win-amd64-3.6\cvxopt
copying src\python\_version.py -> build\lib.win-amd64-3.6\cvxopt
copying src\python\__init__.py -> build\lib.win-amd64-3.6\cvxopt
UPDATING build\lib.win-amd64-3.6\cvxopt/_version.py
set build\lib.win-amd64-3.6\cvxopt/_version.py to '1.1.9'
running build_ext
building 'base' extension
creating build\temp.win-amd64-3.6
creating build\temp.win-amd64-3.6\Release
creating build\temp.win-amd64-3.6\Release\src
creating build\temp.win-amd64-3.6\Release\src\C
C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\BIN\x86_amd64\cl.exe /c /nologo /Ox /W3 /GL /DNDEBUG /MD -Ic:\python36\include -Ic:\python36\include "-IC:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\INCLUDE" "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.10240.0\ucrt" "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.10240.0\shared" "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.10240.0\um" "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.10240.0\winrt" "-IC:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\INCLUDE" "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.10240.0\ucrt" "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.10240.0\shared" "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.10240.0\um" "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.10240.0\winrt" /Tcsrc/C/base.c /Fobuild\temp.win-amd64-3.6\Release\src/C/base.obj
base.c
c:\users\clayton\appdata\local\temp\pip-build-81vbp793\cvxopt\src\c\misc.h(35): error C2146: syntax error: missing ';' before identifier 'z'
c:\users\clayton\appdata\local\temp\pip-build-81vbp793\cvxopt\src\c\misc.h(35): error C2061: syntax error: identifier 'z'
c:\users\clayton\appdata\local\temp\pip-build-81vbp793\cvxopt\src\c\misc.h(36): error C2059: syntax error: '}'
src/C/base.c(46): error C2122: 'void *': prototype parameter in name list illegal
src/C/base.c(46): error C2122: 'int': prototype parameter in name list illegal
src/C/base.c(46): error C2122: 'void **': prototype parameter in name list illegal
src/C/base.c(49): error C2081: 'number': name in formal parameter list illegal
src/C/base.c(52): error C2081: 'number': name in formal parameter list illegal
src/C/base.c(55): error C2081: 'number': name in formal parameter list illegal
src/C/base.c(58): error C2081: 'number': name in formal parameter list illegal
src/C/base.c(60): error C2146: syntax error: missing ')' before identifier '_complex'
src/C/base.c(60): error C2061: syntax error: identifier '_complex'
src/C/base.c(60): error C2059: syntax error: ')'
src/C/base.c(67): error C2061: syntax error: identifier 'One'
src/C/base.c(67): error C2059: syntax error: ';'
src/C/base.c(67): error C2059: syntax error: '['
src/C/base.c(79): error C2146: syntax error: missing ')' before identifier '_complex'
src/C/base.c(79): error C2065: '_complex': undeclared identifier
src/C/base.c(79): error C2059: syntax error: ')'
src/C/base.c(79): error C2297: '*': illegal, right operand has type 'void'
src/C/base.c(79): error C2143: syntax error: missing ')' before ';'
src/C/base.c(95): error C2146: syntax error: missing ')' before identifier '_complex'
src/C/base.c(95): error C2065: '_complex': undeclared identifier
src/C/base.c(95): error C2059: syntax error: ')'
src/C/base.c(95): error C2297: '*': illegal, right operand has type 'void'
src/C/base.c(95): error C2143: syntax error: missing ')' before ';'
src/C/base.c(96): error C2146: syntax error: missing ')' before identifier '_complex'
src/C/base.c(96): error C2065: '_complex': undeclared identifier
src/C/base.c(96): error C2059: syntax error: ')'
src/C/base.c(96): error C2297: '*': illegal, right operand has type 'void'
src/C/base.c(96): error C2143: syntax error: missing ')' before ';'
src/C/base.c(134): warning C4244: '=': conversion from 'Py_ssize_t' to 'double', possible loss of data
src/C/base.c(157): error C2146: syntax error: missing ')' before identifier '_complex'
src/C/base.c(157): error C2065: '_complex': undeclared identifier
src/C/base.c(157): error C2100: illegal indirection
src/C/base.c(157): error C2059: syntax error: ')'
src/C/base.c(157): error C2297: '*': illegal, right operand has type 'void *'
src/C/base.c(159): error C2146: syntax error: missing ')' before identifier '_complex'
src/C/base.c(159): error C2065: '_complex': undeclared identifier
src/C/base.c(159): error C2100: illegal indirection
src/C/base.c(159): error C2059: syntax error: ')'
src/C/base.c(159): error C2297: '*': illegal, right operand has type 'void *'
src/C/base.c(161): error C2146: syntax error: missing ')' before identifier '_complex'
src/C/base.c(161): error C2065: '_complex': undeclared identifier
src/C/base.c(161): error C2100: illegal indirection
src/C/base.c(161): error C2059: syntax error: ')'
src/C/base.c(161): error C2297: '*': illegal, right operand has type 'void *'
src/C/base.c(161): error C2297: '*': illegal, right operand has type 'void'
src/C/base.c(161): error C2143: syntax error: missing ')' before ';'
src/C/base.c(166): error C2146: syntax error: missing ')' before identifier '_complex'
src/C/base.c(166): error C2065: '_complex': undeclared identifier
src/C/base.c(166): error C2100: illegal indirection
src/C/base.c(166): error C2059: syntax error: ')'
src/C/base.c(166): error C2297: '*': illegal, right operand has type 'void *'
src/C/base.c(166): error C2088: '*': illegal for struct
src/C/base.c(247): warning C4244: 'function': conversion from 'Py_ssize_t' to 'long', possible loss of data
src/C/base.c(259): error C2146: syntax error: missing ')' before identifier '_complex'
src/C/base.c(259): error C2065: '_complex': undeclared identifier
src/C/base.c(259): error C2059: syntax error: ')'
src/C/base.c(259): error C2297: '*': illegal, right operand has type 'void'
src/C/base.c(259): error C2143: syntax error: missing ')' before ';'
src/C/base.c(264): error C2146: syntax error: missing ')' before identifier 'a'
src/C/base.c(264): error C2081: 'number': name in formal parameter list illegal
src/C/base.c(264): error C2061: syntax error: identifier 'a'
src/C/base.c(264): error C2059: syntax error: ';'
src/C/base.c(264): error C2059: syntax error: ','
src/C/base.c(264): error C2059: syntax error: ')'
src/C/base.c(273): error C2146: syntax error: missing ')' before identifier 'a'
src/C/base.c(273): error C2081: 'number': name in formal parameter list illegal
src/C/base.c(273): error C2061: syntax error: identifier 'a'
src/C/base.c(273): error C2059: syntax error: ';'
src/C/base.c(273): error C2059: syntax error: ','
src/C/base.c(273): error C2059: syntax error: ')'
src/C/base.c(281): error C2146: syntax error: missing ')' before identifier 'a'
src/C/base.c(281): error C2081: 'number': name in formal parameter list illegal
src/C/base.c(281): error C2061: syntax error: identifier 'a'
src/C/base.c(281): error C2059: syntax error: ';'
src/C/base.c(281): error C2059: syntax error: ','
src/C/base.c(281): error C2059: syntax error: ')'
src/C/base.c(291): error C2081: 'number': name in formal parameter list illegal
src/C/base.c(291): error C2065: 'idiv': undeclared identifier
src/C/base.c(291): error C2065: 'ddiv': undeclared identifier
src/C/base.c(291): error C2065: 'zdiv': undeclared identifier
src/C/base.c(291): error C2099: initializer is not a constant
src/C/base.c(293): error C2146: syntax error: missing ')' before identifier 'a'
src/C/base.c(293): error C2081: 'number': name in formal parameter list illegal
src/C/base.c(293): error C2061: syntax error: identifier 'a'
src/C/base.c(293): error C2059: syntax error: ';'
src/C/base.c(293): error C2059: syntax error: ','
src/C/base.c(293): error C2059: syntax error: ')'
src/C/base.c(302): error C2146: syntax error: missing ')' before identifier 'a'
src/C/base.c(302): error C2081: 'number': name in formal parameter list illegal
src/C/base.c(302): error C2061: syntax error: identifier 'a'
src/C/base.c(302): error C2059: syntax error: ';'
src/C/base.c(302): error C2059: syntax error: ','
src/C/base.c(302): error C2059: syntax error: ')'
src/C/base.c(311): error C2081: 'number': name in formal parameter list illegal
src/C/base.c(311): error C2065: 'mtx_irem': undeclared identifier
src/C/base.c(311): error C2065: 'mtx_drem': undeclared identifier
src/C/base.c(311): error C2099: initializer is not a constant
src/C/base.c(360): error C2065: 'number': undeclared identifier
src/C/base.c(360): error C2146: syntax error: missing ';' before identifier 'a'
src/C/base.c(360): error C2065: 'a': undeclared identifier
src/C/base.c(360): fatal error C1003: error count exceeds 100; stopping compilation
error: command 'C:\\Program Files (x86)\\Microsoft Visual Studio 14.0\\VC\\BIN\\x86_amd64\\cl.exe' failed with exit status 2

----------------------------------------
Command "c:\python36\python.exe -u -c "import setuptools, tokenize;__file__='C:\\Users\\Clayton\\AppData\\Local\\Temp\\pip-build-81vbp793\\cvxopt\\setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __file__, 'exec'))" install --record C:\Users\Clayton\AppData\Local\Temp\pip-xcv57jyr-record\install-record.txt --single-version-externally-managed --compile" failed with error code 1 in C:\Users\Clayton\AppData\Local\Temp\pip-build-81vbp793\cvxopt\

We need to install the numpy+mkl before cvxopt, please check this and download the numpy+mkl package and the appropriate cvxopt, then install them like the following:

  1. Open CMD and cd to the downloads folder

  2. pip install "numpy-1.13.1+mkl-cp36-cp36m-win_amd64.whl"

  3. pip install "cvxopt-1.1.9-cp36-cp36m-win_amd64.whl"

cvxopt is hard to install from sources (especially on windows) because of some heavy dependencies (BLAS, LAPACK, SuiteSparse). In your case it already fails for the more simple dependency of having some compatible c-compiler setup.

Reading the install-docs you will see, that binaries are only provided for python 2.7 and python 3.4 (on windows)!

So either use one of these python-versions and do it again, or use the anaconda-distribution and install through conda-forge as explained in above link. I highly recommend the anaconda-way! ( edit: no Windows-builds in conda-forge as mentioned in the comment).

Sara's approach based on Gohlke's binaries can work. But it's more troublesome in general (when combining with other libraries).

There is also the official manual windows-install but imho it's not worth the trouble (and still limited to some python-versions).

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM