Python Software for Convex Optimization

CVXOPT is a free software package for convex optimization based on the Python programming language. It can be used with the interactive Python interpreter, on the command line by executing Python scripts, or integrated in other software via Python extension modules. Its main purpose is to make the development of software for convex optimization applications straightforward by building on Python’s extensive standard library and on the strengths of Python as a high-level programming language.

Current release

Version 1.3 includes:

  • efficient Python classes for dense and sparse matrices (real and complex), with Python indexing and slicing and overloaded operations for matrix arithmetic

  • an interface to most of the double-precision real and complex BLAS

  • an interface to LAPACK routines for solving linear equations and least-squares problems, matrix factorizations (LU, Cholesky, LDLT and QR), symmetric eigenvalue and singular value decomposition, and Schur factorization

  • an interface to the fast Fourier transform routines from FFTW

  • interfaces to the sparse LU and Cholesky solvers from UMFPACK and CHOLMOD

  • routines for linear, second-order cone, and semidefinite programming problems

  • routines for nonlinear convex optimization

  • interfaces to the linear programming solver in GLPK, the semidefinite programming solver in DSDP5, and the linear, quadratic and second-order cone programming solvers in MOSEK

  • a modeling tool for specifying convex piecewise-linear optimization problems.


A platform-independent source package is available from the Download section, and pre-built packages are available via the Pip and Conda package managers (refer to the installation instructions for further details). CVXOPT can also be obtained from the Debian, Ubuntu, and Fedora package repositories, and is included in Python(x,y) for Microsoft Windows. Modeling interfaces to the CVXOPT solvers are available in CVXPY and PICOS.


CVXOPT is developed by Martin Andersen (, Joachim Dahl (, and Lieven Vandenberghe (

CVXOPT was originally developed for use in our own work, and is being made available in the hope that it may be useful to others. We welcome feedback, bug reports, and suggestions for improvements, but can only offer very limited support.