Download and Installation

The package is available in the Python Package Index. The latest development version is available on GitHub.


The implementation requires SymPy and Numpy. The code is compatible with both Python 2 and 3, but using version 3 incurs a major decrease in performance.

While the default CPython interpreter is sufficient for small to medium-scale problems, execution time becomes excessive for larger problems. The code is compatible with Pypy. Using it yields a 10-20x speedup. If you use Pypy, you will need the Pypy fork of Numpy.

By default, Ncpol2sdpa does not require a solver, but then it will not be able to solve a generated relaxation either. Install any supported solver and it will be detected automatically.

Optional dependencies include:

  • SDPA is a possible target solver.
  • SciPy yields faster execution with the default CPython interpreter.
  • PICOS is necessary for using the Cvxopt solver and for converting the problem to a PICOS instance.
  • MOSEK Python module is necessary to work with the MOSEK solver.
  • CVXPY is required for converting the problem to or by solving it by CVXPY.
  • Cvxopt is required by both Chompack and PICOS.
  • Chompack improves the sparsity of the chordal graph extension.


Follow the standard procedure for installing Python modules:

$ pip install ncpol2sdpa

If you use the development version, install it from the source code:

$ git clone
$ cd ncpol2sdpa
$ python install