Install¶
CVXPY supports Python 3 on Linux, macOS, and Windows. You can use pip or conda for installation. You may want to isolate your installation in a virtualenv, or a conda environment.
(Windows only) Download the Visual Studio build tools for Python 3 (instructions).
(macOS only) Install the Xcode command line tools.
(optional) Create and activate a virtual environment.
Install CVXPY using pip:
pip install cvxpy
You can add solver names as “extras”; pip will then install the necessary additional Python packages.
pip install "cvxpy[CBC,CVXOPT,GLOP,GLPK,GUROBI,MOSEK,PDLP,SCIP,XPRESS]"
conda is a system for package and environment management.
(Windows only) Download the Visual Studio build tools for Python 3.
Install conda.
2. Create a new conda environment,
conda create --name cvxpy_env
conda activate cvxpy_env
or activate an existing one
3. Install cvxpy
from conda-forge
conda install -c conda-forge cvxpy
We strongly recommend using a fresh virtual environment (virtualenv or conda) when installing CVXPY from source.
CVXPY has the following dependencies:
All required packages are installed automatically alongside CVXPY.
Perform the following steps to install CVXPY from source:
Clone the official CVXPY git repository, or a newly minted fork of the CVXPY repository.
Navigate to the top-level of the cloned directory.
3. If you want to use CVXPY with editable source code, run
pip install -e .
otherwise, run
pip install .
We provide support for GitHub Codespaces with preconfigured environments for CVXPY development via devcontainers. To get started, click the “Code” button on the CVXPY repository and select “Open with Codespaces”.
Install with Additional Solver Support¶
CVXOPT and GLPK
CVXPY supports the CVXOPT solver. Additionally, through CVXOPT, CVXPY supports the GLPK solver. On most platforms, CVXOPT comes with GLPK bundled. On such platforms, installing CVXOPT with
pip install cvxopt
should suffice to get support for both CVXOPT and GLPK.
On other platforms, to install CVXPY and its dependencies with GLPK support, follow these instructions:
Install GLPK. We recommend either installing the latest GLPK from source or using a package manager such as apt-get on Ubuntu and homebrew on OS X.
Install CVXOPT with GLPK bindings.
CVXOPT_BUILD_GLPK=1
CVXOPT_GLPK_LIB_DIR=/path/to/glpk-X.X/lib
CVXOPT_GLPK_INC_DIR=/path/to/glpk-X.X/include
pip install cvxopt
Follow the standard installation procedure to install CVXPY and its remaining dependencies.
GUROBI
CVXPY supports the GUROBI solver.
Install GUROBI version 7.5.2 or greater such that you can import gurobipy
in Python.
See the GUROBI website for installation instructions.
MOSEK
CVXPY supports the MOSEK solver.
Simply install MOSEK such that you can import mosek
in Python.
See the MOSEK website for installation instructions.
XPRESS
CVXPY supports the FICO Xpress solver.
Simply install XPRESS such that you can import xpress
in Python.
See the Xpress Python documentation pages for installation instructions.
Cbc (Clp, Cgl)
CVXPY supports the Cbc solver (which includes Clp and Cgl) with the help of cylp. Simply install cylp and the corresponding prerequisites according to the instructions, such you can import this library in Python.
COPT
CVXPY supports the COPT solver.
Simply install COPT such that you can import coptpy
in Python.
See the COPT release page for installation instructions.
CPLEX
CVXPY supports the CPLEX solver.
Simply install CPLEX such that you can import cplex
in Python.
See the CPLEX website for installation instructions.
SDPA
CVXPY supports the SDPA solver.
Simply install SDPA for Python such that you can import sdpap
in Python.
See the SDPA for Python website for installation instructions.
SDPT3
The sdpt3glue package allows you to model problems with CVXPY and solve them with SDPT3.
NAG
CVXPY supports the NAG solver.
Simply install NAG such that you can import naginterfaces
in Python.
See the NAG website for installation instructions.
GLOP and PDLP
CVXPY supports the GLOP and PDLP solvers. Both solvers are provided by
the open source OR-Tools package.
Install OR-Tools such that you can run import ortools
in Python. OR-Tools
version 9.3 or greater is required.
SCIP
CVXPY supports the SCIP solver through the pyscipopt
Python package.
See the PySCIPOpt github for installation instructions.
CVXPY’s SCIP interface does not reliably recover dual variables for constraints. If you require dual variables for a continuous problem, you will need to use another solver. We welcome additional contributions to the SCIP interface, to recover dual variables for constraints in continuous problems.
HiGHS
CVXPY supports the HiGHS solver. Run the following command to install the HiGHS python interface.
See the HiGHS documentation for additional instructions.
SCIPY
CVXPY supports the SCIPY solver for LPs and MIPs. This requires the SciPy package in Python, which should already be installed, as it is a requirement for CVXPY. SciPy’s “interior-point” and “revised-simplex” implementations are written in Python and are always available. However, the main advantage of this solver is its ability to use the `HiGHS`_ LP and MIP solvers (which are written in C++). `HiGHS`_ LP solvers come bundled with SciPy version 1.6.1 and higher. The `HiGHS`_ MIP solver comes bundled with version 1.9.0 and higher.
PIQP
CVXPY supports the PIQP solver.
Simply install PIQP such that you can import piqp
in Python.
See the PIQP website for installation instructions.
PROXQP
CVXPY supports the PROXQP solver.
Simply install PROXQP such that you can import proxsuite
in Python.
See the proxsuite github for installation instructions.
Be aware that PROXQP by default uses dense matrices to represent problem data.
You may achieve better performance by setting backend = 'sparse'
in your call to problem.solve
.
Without default solvers
CVXPY can also be installed without the default solver dependencies. This can be useful if the intention is to only use non-default solvers.
The solver-less installation, cvxpy-base
, can currently be installed through pip and conda.
Installing using pip:
pip install cvxpy-base
Installing using conda:
conda install cvxpy-base
Running the test suite¶
CVXPY comes with an extensive test suite, which can be run after installing pytest. If installed from source, navigate to the root of the repository and run
pytest
To run the tests when CVXPY was not installed from source, use
pytest --pyargs cvxpy.tests