Install the Python Library & CLI

The Syside Python Library & CLI installs from Sensmetry’s package index into your project’s Python environment (Python 3.12.4 or newer). The index opens with your license key, and passes every other package through to PyPI, so dependencies install as usual. See Minimum requirements for everything it needs, and Set up a virtual environment if the project has no environment yet.

Optional features are available as extras:

  • syside[ipython] – Interactive mode, to answer small questions not requiring a full Python script

  • syside[reqif] – ReqIF, to move requirements from and to requirements management tools Labs

  • syside[solver] – Solver, to execute your models Labs

  • syside[all] – install all optional features

  1. Store your license key for the index, once per machine. uv asks for it as the password:

    uv auth login https://pypi.pkg.keygen.sh --username license
    
  2. Add Syside to the project:

    uv add syside --index syside=https://pypi.pkg.keygen.sh/644d4d1e-e8c0-4554-b6c5-6e571da51bf6/simple
    

    uv records the index in pyproject.toml, without the key. On a CI runner, set UV_INDEX_SYSIDE_USERNAME to license and UV_INDEX_SYSIDE_PASSWORD to the key instead of logging in.

pip install syside --index-url https://pypi.pkg.keygen.sh/644d4d1e-e8c0-4554-b6c5-6e571da51bf6/simple

pip asks for a username and a password: enter license, then your license key.

Activate license

The Python library validates the license each time import syside is called, and each check reaches our licensing servers. Licensing covers what that needs, and What data we collect lists what is sent and what you can turn off.

Store the license key in one of the following locations, or import a license file where the servers are unreachable. Keep the key private: an exposed key risks unauthorized use or revocation of the license.

On a desktop, the operating system’s secret storage (Windows Credential Store, macOS Keychain, or GNOME Keyring on Linux) holds the key per user, for every project, outside code and configuration.

With the Syside VS Code Extension, open the Command Palette (Ctrl/Cmd+Shift+P) and run Syside: Add Syside license key to keyring. The command copies the key the extension holds, or asks for one when it has none yet.

Without the extension, store it with the syside-license tool, which needs Python 3.12.4 or newer and asks for the key. The tool installs from the same package index as Syside, so the index credentials from the install step apply:

uvx --index https://pypi.pkg.keygen.sh/644d4d1e-e8c0-4554-b6c5-6e571da51bf6/simple syside-license keyring store
pip install syside-license --index-url https://pypi.pkg.keygen.sh/644d4d1e-e8c0-4554-b6c5-6e571da51bf6/simple
syside-license keyring store

For local development, create a .env file in the project root containing your license key:

SYSIDE_LICENSE_KEY=<your-license-key>

Add .env to your .gitignore so the key is never committed.

Set SYSIDE_LICENSE_KEY in the shell you run Syside from. The setting lasts only for that shell session. To make it permanent, set it in your shell’s profile or your system’s environment settings. It is also the route where there is no secret storage, such as a Docker container or WSL.

On Windows (PowerShell):

$env:SYSIDE_LICENSE_KEY = "<your-license-key>"

On macOS or Linux:

export SYSIDE_LICENSE_KEY=<your-license-key>

A pipeline takes the CI/CD license that comes with your license. Store it as SYSIDE_LICENSE_KEY: in GitLab as a masked CI/CD variable, in GitHub as a repository secret.

On a machine that cannot reach our licensing servers, import a license file instead: Offline license covers getting, carrying over and importing it.

Verify installation

Check that the module imports:

python -c "import syside; print(syside.__version__)"

You should see the installed version. With uv, prefix the command with uv run.

ModuleNotFoundError means this shell is not using the environment you installed into: activate it. A license error means no valid key was found: revisit Activate license.

Continue to Your first Python example, or start at Troubleshooting if something did not work.

Update the Python Library & CLI

Updating keeps your license activation.

uv sync --upgrade-package syside
pip install syside --upgrade --index-url https://pypi.pkg.keygen.sh/644d4d1e-e8c0-4554-b6c5-6e571da51bf6/simple

Install offline

Download the wheels, the .whl files pip installs from, on a connected machine, carry them over, and install from them. Both machines need Python 3.12.4 or newer, the offline one with uv or pip as well, since the wheels bring neither. Where the offline machine cannot reach our licensing servers either, it takes a license file rather than a key: see Offline license.

Download the wheels

On the connected machine, run the line for the offline machine’s platform, or every line to cover them all. Name any extra you use in place of syside, as in "syside[ipython]". Each line asks for a username and a password: enter license, then your license key.

export PIP_INDEX_URL=https://pypi.pkg.keygen.sh/644d4d1e-e8c0-4554-b6c5-6e571da51bf6/simple
uvx pip download --only-binary=:all: --platform win_amd64 syside
uvx pip download --only-binary=:all: --platform win_arm64 syside
uvx pip download --only-binary=:all: --platform macosx_11_0_arm64 syside
uvx pip download --only-binary=:all: --platform macosx_10_15_x86_64 syside
uvx pip download --only-binary=:all: --platform manylinux_2_31_x86_64 syside
export PIP_INDEX_URL=https://pypi.pkg.keygen.sh/644d4d1e-e8c0-4554-b6c5-6e571da51bf6/simple
pip download --only-binary=:all: --platform win_amd64 syside
pip download --only-binary=:all: --platform win_arm64 syside
pip download --only-binary=:all: --platform macosx_11_0_arm64 syside
pip download --only-binary=:all: --platform macosx_10_15_x86_64 syside
pip download --only-binary=:all: --platform manylinux_2_31_x86_64 syside

The form downloads the Syside wheel for one platform, without the packages it depends on.

Install from the wheels

On the offline machine, install from the directory the wheels were carried to, naming the same extras:

uv add --no-index --find-links "<path/to/wheels>" syside
pip install --no-index --find-links "<path/to/wheels>" syside

Minimum requirements

  • Linux x64 distribution with GNU C Library glibc >= 2.31

    Check yours with ldd --version. The first line ends with the glibc version, as in ldd (Ubuntu GLIBC 2.39-0ubuntu8.8) 2.39.

  • Python 3.12.4 or newer, 64-bit

  • Internet connection, or wheels carried over with an offline license