Troubleshooting#
Regional PyPI mirrors#
Symptom. A configured PyPI mirror may be missing a required package version or lag
behind PyPI. For example, if the mirror does not provide
mooncake-transfer-engine-cuda13>=0.3.10, installation fails to resolve the
requirement in pyproject.toml. This is an index
availability issue; the mirror does not have the required version.
Check. If uv reports that the requirement was not found in the package registry, check the configured mirror for the required wheel. To see whether PyPI has a wheel for your environment, use the download command below.
Fix. Download that one wheel from PyPI, then use --find-links while keeping your
existing uv mirror configuration for the other packages. With the Python 3.12
virtual environment from the installation guide
active, install pip into it so the downloaded wheel matches that environment:
uv pip install pip
python -m pip download --no-deps --index-url https://pypi.org/simple \
"mooncake-transfer-engine-cuda13>=0.3.10" -d ./wheels
uv pip install --prerelease=allow --find-links ./wheels -e . # or "sglang-omni==<version>" in place of -e .
Expected output of uv pip check#
Symptom. A CUDA installation finishes, but the dependency check reports version or platform conflicts.
Check. With the SGLang-Omni environment active, run:
uv pip check
Interpret the output. uv pip check and python -m pip check compare the requirements every installed distribution declares with the versions installed next to it. The CUDA install paths leave a few declared ranges unmet on purpose, so the lines in this table are expected and the code they concern runs. Investigate any other line before serving a model.
Install path |
Reported line |
Why the runtime still works |
|---|---|---|
Every CUDA path |
|
SGLang pulls both through |
After |
|
The project runs Transformers 5.19.0, and |
Same |
|
|
Same |
|
The CUDA path installs |
|
|
The override keeps protobuf 6.x. |
Every CUDA path |
|
The wheel is published as |
The two tools word the lines differently, and uv pip check exits with status 1 whenever it prints one, so its exit status is not a gate. A source checkout has a script that runs the same comparison with the interpreter it is started with and fails only on a line outside this table. The PyPI package does not include it, so run it from the root of the checkout, for example after installing from source, with the environment’s Python:
cd sglang-omni # the root of the source checkout
python .github/scripts/check_omni_installed_requirements.py
The install commands keep --prerelease=allow from the releases that pinned cuda-tile==1.6.0rc5; SGLang 0.5.23 pins no pre-release package and the CUDA path resolves without the flag. With the flag, uv may take a pre-release of any package when one is newer than the latest release on PyPI, which is why uv pip freeze can list development or release-candidate versions of packages such as einops, safetensors or grpcio.
SGLang 0.5.23 ships manylinux_2_34 wheels, so the CUDA path needs glibc 2.34 or newer, as on Ubuntu 22.04. On an older system uv stops with sglang==0.5.23 has no wheels with a matching platform tag.