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.
Use placeholder names like acme and python below. In the app, replace them with your customer public ID and repository public ID.
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/pypi/x/acme/python/simple/ \
internal-sdk
Or add to pip.conf / pyproject.toml:
[tool.uv]
index-url = "https://rvnsta.sh/pypi/x/acme/python/simple/"
# pip.conf
[global]
extra-index-url = https://__token__:%(RAVENSTASH_TOKEN)s@rvnsta.sh/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
Private PyPI upload, simple-index downloads, artifact downloads, and metadata sidecars are implemented. Anonymous installs and public-read repositories are planned but not implemented.
