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.

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.