pip installation

This page describes how to install RADKit from its Python packages (a.k.a “wheels”). This installation method is for you if:

  • you plan to use RADKit as an SDK to develop automation;

  • you need to integrate RADKit with PyATS/Genie or another 3rd party library;

  • there is no RADKit installer available for your OS/architecture;

  • you need specific control over your Python packages/dependencies.

Danger

All RADKit releases available externally are cryptographically signed by Cisco. You should NEVER install a RADKit component whose code signature you have not been able to find and verify. See Code signing for more information.

Python environment

To install Python (see Supported Python versions), please refer to your operating system documentation. We strongly recommend using a Python dependency manager such as uv to create reproducible and manageable Python environments. Otherwise, you can use a more traditional approach by setting up a virtual Python environment using a tool such as pyenv, venv or virtualenv.

Warning

Installation problems have been reported when adding the --user parameter to pip install and/or when a .local/ directory exists in the user’s home directory. In both cases, leaks have been observed between the global and virtual Python environments. As a consequence, we do not support installing RADKit with the --user parameter or if Python packages are present in the .local directory.

Installing from PyPI

Warning

Since version 1.8.5, RADKit used to be available on PyPI.org. However, due to the repository’s policies regarding code obfuscation, publishing of RADKit to PyPI.org had to be suspended until it can be made compliant. Recent RADKit versions are now available at our external PyPI repository.

There are only four official RADKit projects on our external PyPI repository, which are:

For a managed Python environment you can create a pyproject.toml similar to the following example, and then run uv sync to install the dependencies:

# pyproject.toml
[project]
name = "radit-venv"
version = "0.1.0"
requires-python = ">=3.12"
dependencies = [
  "cisco-radkit-client[integrated]"
]

[[tool.uv.index]]
name = "radkit-external"
url = "https://radkit.cisco.com/pip"

Warning

While using uv it is important that the RADKit external PyPI repository is added as an index in the pyproject.toml file, otherwise the RADKit packages will get installed from PyPI.org, which hosts only placeholder packages at this time. Furthermore, the external PyPI repository should be added as the first index in the list of indexes, to ensure that RADKit packages are preferred over any similarly named packages.

For a more traditional approach, we recommend running pip download first to pre-download the RADKit wheels and verify their code signatures (see Code signing) before installing. In that case it is best to download all the RADKit wheels at once by running the following command in an empty directory, followed by the installation command:

# Pre-download the RADKit wheels (verify their code signatures before installing)
python3 -m pip download --no-deps --index-url https://radkit.cisco.com/pip cisco_radkit_client cisco_radkit_service cisco_radkit_common cisco_radkit_genie

# To install RADKit Client only
python3 -m pip install --find-links . cisco_radkit_client

# To install RADKit Service only
python3 -m pip install --find-links . cisco_radkit_service

# To install BOTH
python3 -m pip install --find-links . cisco_radkit_client cisco_radkit_service

Installing from tarballs

An alternative way of getting the RADKit wheels is to visit the downloads area, get the RADKit wheels tarball for your system (see Supported OSes & architectures) and unpack it locally. Once the wheels are downloaded and unpacked, you are encouraged to verify the code signatures (see Code signing) before installing.

To install, open a Terminal or Command Prompt window, navigate to the directory where the wheels are located, and make sure that the correct virtual Python environment is activated. Finally, install RADKit by running pip from within that directory:

# To install RADKit Client only
python3 -m pip install -f . cisco_radkit_client

# To install RADKit Service only
python3 -m pip install -f . cisco_radkit_service

# To install BOTH
python3 -m pip install -f . cisco_radkit_client cisco_radkit_service

xcrun error on macOS

On macOS, if you encounter the error xcrun: error: invalid active developer path or something similar related to building some dependencies from source, you may need to install or reinstall Xcode (a macOS component) using the command: xcode-select --install (if the problem persists, try xcode-select --reset).

Starting RADKit

First activate the virtual environment where you ran the commands in the previous section. The different RADKit components can be started through the CLI from a shell:

  • radkit-client

  • radkit-control

  • radkit-interactive

  • radkit-medic-gui

  • radkit-network-console

  • radkit-service

  • radkit-service-gui

Warning

  • radkit-service-gui and radkit-medic-gui are currently not supported on Linux.

  • On macOS, the zsh shell keeps a cache of where executables are found in the PATH. In some situations where multiple instances of RADKit have been installed (especially when mixing installer-based and pip-based installations), it may be necessary to run the rehash command to find the most recent installation. In general, it is best to avoid mixing installation methods, to properly uninstall unused instances, and to keep a strict separation between concurrently installed RADKit instances by making proper use of virtual environments.

Upgrading RADKit

RADKit Client and Service have to be upgraded together if they are installed within the same Python environment.

This is due to a common dependency, cisco_radkit_common, that is used by both cisco_radkit_client and cisco_radkit_service. If e.g. only the Client package is updated, the Common package will be updated along with it and may become incompatible with the non-updated Service, causing run-time errors and/or other strange behavior. If you ever get into this situation, you will be warned by pip:

ERROR: pip's dependency resolver does not currently take into account all the packages that are installed. This behaviour is the source of the following dependency conflicts.
cisco-radkit-service 1.3.8 requires cisco-radkit-common==1.3.8, but you have cisco-radkit-common 1.4.0b14 which is incompatible.

Still, it is easy to miss this warning, especially because after displaying it, pip will still terminate successfully, so please pay close attention when upgrading.

Uninstalling RADKit

  • To uninstall RADKit packages installed via uv while using a pyproject.toml, simply remove the RADKit dependencies from the dependencies section and run uv sync again to uninstall them.

  • To uninstall RADKit packages installed via pip, first list all the installed RADKit packages using pip freeze and then run pip uninstall for all cisco_radkit_... packages.