Python — pip and uv
Use pip, uv, and rvn pip to install private Python packages from Ravenstash repositories without changing your global configuration.
Updated 2026-06-24
This guide covers native Python tooling. For the simpler rvn pkg workflow that works without touching pip configuration, see Getting started.
The examples use acme/python as a sample workspace and repository. In Ravenstash, copy the exact values from your repository page.
rvn pip — native pip with injected auth
rvn pip passes all arguments directly to pip, inserting the private index URL and credentials from the active session. Your global pip.conf and ~/.config/pip/pip.conf are not modified.
rvn pip install internal-sdk --repo acme/python
This is equivalent to running pip with --index-url and --extra-index-url flags set to the Ravenstash repository — no manual credential setup needed in development.
Configure pip directly
For environments where rvn is not available (bare CI, containers), configure pip explicitly:
pip install \
--index-url https://__token__:${RAVENSTASH_TOKEN}@rvnsta.sh/n/pypi/x/acme/python/simple/ \
internal-sdk
Or add to pip.conf / pyproject.toml:
[tool.uv]
index-url = "https://rvnsta.sh/n/pypi/x/acme/python/simple/"
# pip.conf
[global]
extra-index-url = https://__token__:%(RAVENSTASH_TOKEN)s@rvnsta.sh/n/pypi/x/acme/python/simple/
Publish with rvn pkg
For publishing, use rvn pkg publish rather than twine. It uploads directly to Ravenstash without invoking an underlying package manager:
python -m build
rvn pkg publish dist/ --repo acme/python
Current status
Available today: private PyPI publishing, private package indexes, artifact downloads, and installer metadata when available. Public or anonymous Python package sharing is planned for later.
