Dependencies
Third-party optimization solvers¶
SHOP builds optimization models that has to be solved to optimality by an optimization solver. SHOP currently supports the commercial solvers CPLEX and Gurobi, but also the open source solvers CLP/CBC in the Open Solver Interface (OSI) from COIN-OR and HiGHS (from SHOP 18.4.0).
SHOP uses separate solver interface binaries (shop_cplex_interface.dll etc.) to interface with the different solvers. The commercial CPLEX and Gurobi solvers require a separate .dll/.so file that is dynamically linked at runtime by SHOP’s CPLEX and Gurobi interface binaries. Gurobi also requires a valid license file at runtime. The open source CLP/CBC and HiGHS solvers are statically linked into their respective SHOP interface binaries, and so they have no other runtime dependencies.
SINTEF is currently an official reseller of CPLEX for unlimited use within our hydropower scheduling models. Please contact SINTEF if you are interested in purchasing CPLEX. If you purchase CPLEX or Gurobi yourself or through other vendors, you are responsible for not violating the license agreement with CPLEX/Gurobi when running SHOP. Currently only the CPLEX interface is packaged with the SHOP releases on Debian, AlmaLinux, and Windows, please contact SINTEF if you are interested in testing out the other solvers. The Fedora distribution of SHOP include all solvers as optional packages. Note that using other solvers than CPLEX requires the licenses in the “Additional Solvers” license group.
SHOP 18 (latest) binaries¶
The SHOP binaries are available in different builds to support various operating systems and environments. Below are the details of the compiler versions used for the Windows, Linux (Debian, AlmaLinux and Fedora) builds for the latest major SHOP version. See also further down for the dependencies for the previous major version.
The latest SHOP version uses the C++23 standard.
In addition to the main external solver libraries mentioned above with their appropriate licenses, SHOP also utilizes several third-party (open source) libraries. Their license notices can be found in the compressed docs folder alongside the SHOP binaries.
The shop_server_host binary used to set up SHOP as a REST service requires the system to have curl installed.
The Python binding (shop_pybind) is built with nanobind version v3.1.0 and compiled against the CPython stable ABI, meaning that a single binding binary serves all supported Python versions. Earlier SHOP 18 releases (up to and including 18.4.x) were built with pybind11 and shipped one binding binary per Python version, as did the SHOP 17 builds listed further down. See Python bindings backend for how the accompanying nanobind backend is provided on Linux and Windows.
Linux builds¶
The Debian, AlmaLinux and Fedora builds have the following dependencies:
| OS | Python versions | nanobind | glibc / glibcxx |
|---|---|---|---|
| Debian 13 (trixie) | 3.11–3.15 | v3.1.0 | glibc v2.41 / glibcxx v3.4.33 |
| AlmaLinux 9.8 (Olive Jaguar) | 3.11–3.15 | v3.1.0 | glibc v2.34 / glibcxx v3.4.34 |
| Fedora 43 | not supported | – | system libs |
| Fedora 44 | not supported | – | system libs |
AlmaLinux is built with the GCC Toolset 15.
The stable-ABI binding means that the Debian and AlmaLinux builds are no longer listed per Python version, and should work for all Python versions >= 3.10. The Fedora releases are distributed as RPM packages of the SHOP core, solver interfaces and development files, and currently contain neither shop_pybind nor the SHOP Server, so pyshop and the REST service are not available for those builds. On Debian and AlmaLinux the Pyhton binding needs the nanobind-backend package at import time, see Python bindings backend.
The minor OS versions will be updated some time after the official release dates.
Windows build¶
Windows is built with the following dependencies:
| OS | Python version (latest) | nanobind | C compiler / CXX compiler |
|---|---|---|---|
| Windows | 3.15 | v3.1.0 | MSVC 19.51.36248 / MSVC 19.51.36248 |
| Windows | 3.14 | v3.1.0 | MSVC 19.51.36248 / MSVC 19.51.36248 |
| Windows | 3.13 | v3.1.0 | MSVC 19.51.36248 / MSVC 19.51.36248 |
| Windows | 3.12 | v3.1.0 | MSVC 19.51.36248 / MSVC 19.51.36248 |
| Windows | 3.11 | v3.1.0 | MSVC 19.51.36248 / MSVC 19.51.36248 |
The frontend is built against the stable ABI, so a single binding binary serves all the Windows Python versions above. The per-version nanobind backend binaries (shop_nanobind_backend.cp3xx-*.pyd) are shipped for each of them, see Python bindings backend.
Python version support¶
Our policy is to build for all Python versions supported by Python Software Foundation for our releases that include the Python bindings. We strive to support the latest Python version shortly after release, but it might take a few weeks until all our dependencies are updated so that we can add it to our builds.

SHOP 17 (previous) binaries¶
Debian Base build¶
| OS | Python version | pybind11 | glibc / glibcxx |
|---|---|---|---|
| Debian 11 (bullseye) | 3.14.0 | v2.13.6 | glibc v2.39 / glibcxx v3.4.33 |
| Debian 11 (bullseye) | 3.13.9 | v2.13.6 | glibc v2.39 / glibcxx v3.4.33 |
| Debian 11 (bullseye) | 3.12.12 | v2.13.6 | glibc v2.39 / glibcxx v3.4.33 |
| Debian 11 (bullseye) | 3.11.14 | v2.13.6 | glibc v2.39 / glibcxx v3.4.33 |
| Debian 11 (bullseye) | 3.10.19 | v2.13.6 | glibc v2.39 / glibcxx v3.4.33 |
AlmaLinux build¶
| OS | Python version | pybind11 | glibc / glibcxx |
|---|---|---|---|
| AlmaLinux 8.9 (Midnight Oncilla) | 3.11.11 | v2.13.6 | glibc v2.28 / glibcxx v3.4.25 |
Windows build¶
| OS | Python version | pybind11 | C compiler / CXX compiler |
|---|---|---|---|
| Windows | 3.14.10 | v3.0.1 | MSVC 19.37.32822.0 / MSVC 19.37.32822.0 |
| Windows | 3.13.0 | v2.13.6 | MSVC 19.37.32822.0 / MSVC 19.37.32822.0 |
| Windows | 3.12.1 | v2.11.1 | MSVC 19.37.32822.0 / MSVC 19.37.32822.0 |
| Windows | 3.11.5 | v2.11.1 | MSVC 19.37.32822.0 / MSVC 19.37.32822.0 |
| Windows | 3.10.11 | v2.11.1 | MSVC 19.37.32822.0 / MSVC 19.37.32822.0 |