Dependecies on Python packages

These are dependencies on Python packages that are available on the Python Package Index (PyPI).

Numpy

A powerful library for vector and matrix manipulation in Python.

Scipy

A collection of tools for scientific and engineering computing in Python.

Matplotlib

A widely used plotting library for Python.

CVXPY

A powerful Python package for modeling convex optimization problems in a natural mathematical syntax.

PICOS

Another is a user-friendly Python package providing a high-level interface for expressing optimization models, handling both convex and mixed-integer problems, and interfacing with various solvers.

CVXOPT

A Python package for convex optimization, including linear and quadratic programming, second-order cone programming, and related problems.

SCS

Another fast numerical solver for convex cone problems that can handle large-scale linear, second-order cone, and semidefinite programs

In addition, the following is required when building PyDSM from source (currently necessary, since no binary wheels are provided):

Cython

A programming language designed to simplify writing C extensions for Python.

Using the reference workflow, dependency management is straightforward: most packages are distributed in binary form as precompiled, ready-to-install archives (wheels) for all major platforms. When you install PyDSM with pip or equivalent tools, these dependencies are automatically retrieved and installed without the need to compile them.

In the rare case where a wheel is not available for your platform, pip (or the corresponding tool) will fall back to building the package from its source distribution (sdist). The external dependencies required by PyDSM are generally sufficient to build these source packages as well.

Note

If you use the conda workflow, first create an environment and install the required dependencies directly with Conda. Recent versions of these packages are typically fine.

Only then install PyDSM using pip. This way, pip will detect that the dependencies are already present and will not try to reinstall or overwrite them. Allowing pip to manage these dependencies inside a Conda environment may otherwise cause conflicts or inconsistencies.