Use a private index

Install from a private index, behind a proxy, or offline by forwarding index options to the backend.

Set the index for one command

Pass --index-url directly, or forward pip options with --pip-args:

$ pipx install my-package --index-url https://my-index.example.com/simple/
$ pipx install my-package --pip-args="--extra-index-url https://my-index.example.com/simple/"

Quote --pip-args and use an = sign so pipx passes the whole string through. Add trusted hosts and other pip flags the same way:

$ pipx install my-package --pip-args="--index-url https://my-index.example.com/simple/ --trusted-host my-index.example.com"

Set it for every command

pipx forwards PIP_* environment variables to every pip invocation, including shared-library upgrades. Set them in your shell profile or pip’s own config file for a permanent default:

$ export PIP_INDEX_URL=https://my-index.example.com/simple/
$ export PIP_TRUSTED_HOST=my-index.example.com
$ pipx install my-private-package

See the pip configuration docs for the config-file form.

Install offline

Point pip at a local directory of wheels and stop it reaching the network:

$ pipx install my-package --pip-args="--no-index --find-links /path/to/wheels"

Pass --skip-maintenance to keep the bundled pip instead of downloading a shared-library upgrade during the install.

Warning

Under the uv backend, pipx translates only a small subset of --pip-args: --index-url, --extra-index-url, --find-links, and --pre. Any other flag raises an error rather than being silently dropped. Use --backend pip when you need a flag uv cannot translate. See Use the uv backend.

Verify it

$ pipx list --short

The package installs at the version your index serves. For a private index that pipx must also use for its own shared libraries, set the PIP_* variables before the first install.