Installation¶
From a wheel¶
The recommended way to install cyhighs is from a prebuilt wheel with pip.
The wheels bundle HiGHS statically, as described in How HiGHS is bundled, so this single command gives you a working solver with no further setup. The only runtime dependencies are NumPy and SciPy, which pip installs for you.
Wheels are published for CPython 3.11 through 3.14 on:
- Linux x86_64 and aarch64. Two flavours are shipped and pip picks the best
match automatically:
manylinux_2_28(glibc 2.28 or newer, for example CentOS/RHEL 8, Debian 10+, Ubuntu 18.10+) andmusllinux_1_2(Alpine and other musl distros), built by compiling HiGHS from source in the manylinux/musllinux containers.manylinux_2_39(glibc 2.39 or newer, for example Ubuntu 24.04+), built from the official prebuilt HiGHS archive. On new-enough systems pip prefers this one.
- macOS on Apple Silicon (arm64).
- Windows on x86_64.
If a matching wheel exists for your platform, pip uses it and no compiler is needed.
Verifying the install¶
After installing, you can check that the extension imports and that the solver is linked in.
From source¶
If you want to build from source, for example to develop the package or to build for a platform without a published wheel, you need a C and C++ compiler. CMake and Ninja are pulled in automatically as build dependencies, so you do not have to install them yourself.
By default, rather than compiling HiGHS, the build downloads the official prebuilt HiGHS release archive for your platform and links it in, so it is quick and needs network access at build time. Because the prebuilt Linux archive targets a recent glibc, this default source build on Linux also requires glibc 2.38 or newer.
To instead compile HiGHS itself from source — needed on older glibc or on musl,
and how the manylinux_2_28 / musllinux wheels are produced — pass
-DCYHIGHS_HIGHS_FROM_SOURCE=ON. That path links a prebuilt OpenBLAS that must
already be installed (for example openblas-devel on RHEL/Fedora,
libopenblas-dev on Debian/Ubuntu, or openblas-dev on Alpine):
The project uses uv for development. Cloning the repository and running a sync builds the extension.
Building offline or from a local archive¶
If you already have the HiGHS static-apache archive for your platform (or want
to avoid the download), point the build at it with the HIGHS_ARCHIVE CMake
variable and no download happens: