Ravenstash
Docs

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.