cvxopt
Convex optimization package
What it is and what it does
cvxopt is a mature Python package for solving convex optimization problems across linear, quadratic, and semidefinite programming domains. It provides low-level access to optimization algorithms and matrix data structures, making it suitable for researchers and practitioners who need fine-grained control over solver behavior and problem formulation.
The package is built on compiled C code for numerical performance and depends on standard linear algebra libraries (BLAS, LAPACK). It has no Python runtime dependencies, keeping the footprint minimal. The project is actively maintained, with recent commits and a stable API, though its GPLv3 license restricts use in proprietary closed-source applications.
Use it for:
- Solve linear and quadratic programming problems in operations research or portfolio optimization workflows.
- Formulate and solve semidefinite programs for control theory, signal processing, or machine learning applications.
- Prototype convex optimization algorithms in research where direct access to solver internals is needed.
- Build optimization-based decision systems in academic or open-source projects where GPLv3 licensing is acceptable.
Worth the install?
AI-flagged interpretation of the facts on this page — verify before relying
cvxopt is a Python library for solving convex optimization problems, providing algorithms and data structures for linear, quadratic, and semidefinite programming.
Yes, if you need convex optimization and accept GPLv3 licensing. The package is production-stable, actively maintained, and has no Python dependencies. Install friction is moderate due to compiled components, but prebuilt wheels cover common platforms. Not suitable for proprietary closed-source projects due to GPLv3 copyleft requirements.
Install
cvxopt on PyPI
pip
pip install cvxoptuv
uv add cvxoptpoetry
poetry add cvxoptInstalling cvxopt
Before you install
Medium install friction due to compiled C components; wheels are available for Python 3.10–3.12 on macOS, Linux, and Windows, but source builds may require a C compiler and numerical libraries.
License in practice
Licensed under GNU General Public License v3, which requires that any derivative work or distribution must also be released under GPLv3 and provide source code access—a significant constraint for proprietary or closed-source projects.
Quickstart
pip install cvxopt
from cvxopt import matrix, solvers
A = matrix([[1.0, -1.0], [1.0, 1.0]])
b = matrix([1.0, 2.0])
sol = solvers.qp(P, q, G, h)
Requires a C compiler and numerical libraries (BLAS, LAPACK) for source builds; prebuilt wheels simplify installation on common platforms.
Verify before relying
- Whether cvxopt's solver performance and numerical stability are suitable for your specific problem scale and precision requirements.
- Compatibility with other optimization frameworks or whether cvxopt's API and algorithm selection meet your workflow needs.
Package facts
| License | CVXOPT version 1.3 Copyright (c) 2012-2026 M. Andersen and L. Vandenberghe. Copyright (c) 2010-2011 L. Vandenberghe. Copyright (c) 2004-2009 J. Dahl and L. Vandenberghe. This program is free… (full text in the JSON record) (unclear) |
| Python support | supports the current Python release (!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,!=3.7.*,>=3) |
| Install friction | medium — platform-specific wheel |
| Runtime dependencies | none |
| Maintenance | actively maintained — 186 days since the last release |
| Last repo commit | |
| First released | |
| Downloads | 1,311,233/month — #4,073 on PyPI (30-day window, as of 2026-08-14) |
| Known vulnerabilities | none known (OSV.dev, checked 2026-08-14) |
Evidence: cvxopt-1.3.3-cp310-cp310-macosx_15_0_arm64.whl; cvxopt-1.3.3-cp310-cp310-macosx_15_0_x86_64.whl; cvxopt-1.3.3-cp310-cp310-macosx_26_0_x86_64.whl; cvxopt-1.3.3-cp310-cp310-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl; cvxopt-1.3.3-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl; cvxopt-1.3.3-cp310-cp310-musllinux_1_2_aarch64.whl; cvxopt-1.3.3-cp310-cp310-musllinux_1_2_x86_64.whl; cvxopt-1.3.3-cp310-cp310-win_amd64.whl; cvxopt-1.3.3-cp311-cp311-macosx_15_0_arm64.whl; cvxopt-1.3.3-cp311-cp311-macosx_15_0_x86_64.whl; cvxopt-1.3.3-cp311-cp311-macosx_26_0_x86_64.whl; cvxopt-1.3.3-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl; cvxopt-1.3.3-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl; cvxopt-1.3.3-cp311-cp311-musllinux_1_2_aarch64.whl; cvxopt-1.3.3-cp311-cp311-musllinux_1_2_x86_64.whl; cvxopt-1.3.3-cp311-cp311-win_amd64.whl; cvxopt-1.3.3-cp312-cp312-macosx_15_0_arm64.whl; cvxopt-1.3.3-cp312-cp312-macosx_15_0_x86_64.whl; cvxopt-1.3.3-cp312-cp312-macosx_26_0_x86_64.whl; cvxopt-1.3.3-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Tags
More Scientific/Engineering packages
NumPy provides an N-dimensional array object…
permissive · top 100 on PyPI
pandaspandas provides fast, flexible data structures…
permissive · top 100 on PyPI
scipyscipy provides numerical algorithms for…
permissive · top 100 on PyPI
scikit-learnscikit-learn provides a comprehensive Python…
permissive · top 1,000 on PyPI
dilldill extends Python's pickle module to…
permissive · top 1,000 on PyPI
multiprocessMultiprocess is an enhanced fork of Python's…
permissive · top 1,000 on PyPI
clarabelClarabel is an interior-point conic…
permissive · top 5,000 on PyPI
MosekMOSEK solves large-scale convex and…
unclear · top 15,000 on PyPI
nloptNLopt provides Python bindings to the NLopt…
permissive · top 5,000 on PyPI
osqpOSQP is a Python wrapper for the Operator…
permissive · top 5,000 on PyPI
scsscs is a Python interface to the Splitting…
permissive · top 5,000 on PyPI
pyomoPyomo is a Python framework for formulating and…
permissive · top 5,000 on PyPI
qpsolversProvides a unified Python interface to solve…
copyleft · top 5,000 on PyPI
quadprogSolves strictly convex quadratic programming…
copyleft · top 15,000 on PyPI
cvxpy-basecvxpy-base provides compiled solver kernels for…
permissive · top 15,000 on PyPI
ecosECOS is a Python wrapper for a numerical solver…
copyleft · top 5,000 on PyPI