Skip to content

Download and installation

Requirements

Calliope is tested on Linux, macOS, and Windows.

Running Calliope requires four things:

  1. The Python programming language, at least version 3.12.
  2. A number of Python add-on modules including Pyomo, Pandas and Xarray.
  3. An optimisation solver: Calliope has been tested with CBC, GLPK, and Gurobi. Any other solver that is compatible with Pyomo should also work.
  4. The Calliope software itself.

We recommend two installation paths depending on your use-case:

  1. conda or pixi (recommended): use conda or pixi to ensure you have all necessary solver and binary dependencies.
  2. uv or pip: use pip or uv for fast Python package installation. You will need to ensure you have all non-Python libraries installed and available if taking this approach.

If you are interested in developing Calliope, see our contributing page for specific installation instructions.

Install pixi by following the official installation instructions. Then add calliope to your project workspace:

cd <my-project-directory>
pixi init
pixi add conda-forge::calliope

Note

If you cannot directly install pixi due to organisational restrictions, you can also install it in a conda environment and use it from there:

conda install pixi

Install conda by following the official installation instructions. Then, create an environment including calliope:

conda create -n calliope conda-forge::calliope

uv or pip

If you only need to install Calliope from PyPI, use:

uv pip install calliope
pip install calliope

Warning

Although possible, we do not recommend installing Calliope directly via pip or uv. Non-python binaries are not installed with pip, some of which are necessary for stable operation (e.g., libnetcdf).

Choosing a solver

You cannot solve a Calliope model until you have installed a solver. The easiest solver to install is CBC, which is included if you follow the recommended installation instructions above. CBC (open-source) or Gurobi (commercial) are recommended for large problems, and have been confirmed to work with Calliope. The following subsections provide additional detail on how to install a solver. This list is not exhaustive; any solvers supported by Pyomo can be used.

Note

The HiGHS solver is not supported by our Pyomo backend. This is due to the HiGHS interface not being supported by the Pyomo kernel interface, which we use.

CBC

CBC is our recommended option if you want a free and open-source solver. If you do not have it in your working environment (i.e., there is no,thing listed when you call conda list cbc/pixi list cbc) then it can be installed on all platforms:

pixi add conda-forge::coin-or-cbc
conda install conda-forge::coin-or-cbc

GLPK

GLPK is free and open-source, but can take too much time and/or too much memory on larger problems. GLPK can be installed from conda-forge on all platforms:

pixi add conda-forge::glpk
conda install conda-forge::glpk

Unlike CBC, it is possible to extract shadow prices from a model solved with GLPK, which is why you may with to use it instead of CBC.

Gurobi

Gurobi is commercial but significantly faster than CBC and GLPK, which is relevant for larger problems. It needs a license to work, which can be obtained for free for academic use.

The Gurobi solver interface can be installed on all platforms:

pixi add gurobi::gurobi
conda install gurobi::gurobi

This also gives you access to the grbgetkey command in your command line, which you will need to activate your license for use locally.

Note

If using the Gurobi solver, you can also leverage the reduced time and memory consumption of our Gurobi optimisation problem backend - this circumvents Pyomo entirely.

CPLEX

Another commercial alternative is CPLEX. IBM offers academic licenses for CPLEX; refer to the IBM website for details.

Tip

After installing CPLEX, it is important to ensure that the path to the solver is part of the environment variables, which is typically not automatic. Please follow the steps given for your operating system on CPLEX's dedicated documentation.

Customising the solver's performance

Solvers typically allow users to specify custom solver_options, by which you may tailor their performance to what best suits the features of the model you are working with. For further nformation, see our guide on solver options customisation.