.. _install:
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.
.. card:: Instructions
.. tab:: pip
(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]"
.. tab:: conda
`conda`_ is a system for package and environment management.
(Windows only) Download the `Visual Studio build tools for Python 3 `_.
1. 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
.. tab:: Install from source
We strongly recommend using a fresh virtual environment (virtualenv or conda) when installing CVXPY from source.
CVXPY has the following dependencies:
* Python >= 3.9
* `OSQP`_ >= 0.6.2
* `CLARABEL`_ >= 0.6.0
* `SCS`_ >= 3.0
* `NumPy`_ >= 1.21.6
* `SciPy`_ >= 1.11.0
All required packages are installed automatically alongside CVXPY.
Perform the following steps to install CVXPY from source:
1. Clone the official `CVXPY git repository`_, or a newly minted fork of the CVXPY repository.
2. 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 .
.. tab:: Using Codespaces
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
------------------------------------
.. info:: CVXOPT and GLPK
:collapsible: open
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:
1. 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.
2. 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
3. Follow the standard installation procedure to install CVXPY and its remaining dependencies.
.. info:: GUROBI
:collapsible:
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.
.. info:: MOSEK
:collapsible:
CVXPY supports the MOSEK solver.
Simply install MOSEK such that you can ``import mosek`` in Python.
See the `MOSEK `_ website for installation instructions.
.. info:: XPRESS
:collapsible:
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.
.. info:: Cbc (Clp, Cgl)
:collapsible:
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.
.. info:: COPT
:collapsible:
CVXPY supports the COPT solver.
Simply install COPT such that you can ``import coptpy`` in Python.
See the `COPT `_ release page for installation instructions.
.. info:: CPLEX
:collapsible:
CVXPY supports the CPLEX solver.
Simply install CPLEX such that you can ``import cplex`` in Python.
See the `CPLEX `_ website for installation instructions.
.. info:: SDPA
:collapsible:
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.
.. info:: SDPT3
:collapsible:
The `sdpt3glue package `_ allows you to model problems with CVXPY and solve them with SDPT3.
.. info:: NAG
:collapsible:
CVXPY supports the NAG solver.
Simply install NAG such that you can ``import naginterfaces`` in Python.
See the `NAG `_ website for installation instructions.
.. info:: GLOP and PDLP
:collapsible:
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.
.. info:: SCIP
:collapsible:
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.
.. info:: HiGHS
:collapsible:
CVXPY supports the HiGHS solver. Run the following command to install the HiGHS python interface.
.. code-block:: python
pip install highspy
See the `HiGHS `_ documentation for additional instructions.
.. info:: SCIPY
:collapsible:
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.
.. info:: PIQP
:collapsible:
CVXPY supports the PIQP solver.
Simply install PIQP such that you can ``import piqp`` in Python.
See the `PIQP `_ website for installation instructions.
.. info:: PROXQP
:collapsible:
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``.
.. info:: QOCO
:collapsible:
CVXPY supports the QOCO solver.
Simply install QOCO such that you can ``import qoco`` in Python.
See the `QOCO `_ website for installation instructions.
.. info:: Without default solvers
:collapsible:
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:
.. code-block:: python
pip install cvxpy-base
Installing using conda:
.. code-block:: python
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
.. code-block:: python
pytest
To run the tests when CVXPY was not installed from source, use
.. code-block:: python
pytest --pyargs cvxpy.tests
.. _conda: https://docs.conda.io/en/latest/
.. _CVXOPT: https://cvxopt.org/
.. _OSQP: https://osqp.org/
.. _ECOS: https://github.com/ifa-ethz/ecos
.. _CLARABEL: https://oxfordcontrol.github.io/ClarabelDocs/
.. _SCS: https://github.com/cvxgrp/scs
.. _NumPy: https://www.numpy.org/
.. _SciPy: https://www.scipy.org/
.. _pytest: https://docs.pytest.org/en/latest/
.. _CVXPY git repository: https://github.com/cvxpy/cvxpy
.. _pip: https://pip.pypa.io/
.. _GLPK: https://www.gnu.org/software/glpk/
.. _HiGHS: https://highs.dev/