Environments¶
arxpm does not bundle its own Python environment. Every project declares how
its Python environment should be provided, and arxpm uses
uv to install packages into the interpreter
you point it at.
Three strategies are supported out of the box, each declared in
.arxproject.toml via the [environment] table.
Strategy 1 — venv (default)¶
arxpm uses a virtual environment declared by kind = "venv". When path is
omitted, arxpm treats it as a project-local .venv and creates it with
uv venv if needed.
[environment]
kind = "venv"
path = ".venv" # optional; defaults to ".venv"
Behavior:
arxpm installrunsuv venv <path>if the venv does not yet exist, thenuv pip install --python <venv>/bin/python ...for build-system and runtime dependencies.arxpm runandarxpm buildinvoke<venv>/bin/arxso the compiler resolves installed Arx libraries from the same environment.
Omit the whole [environment] section for the simplest projects — the defaults
match what you'd write by hand.
Strategy 2 — conda¶
Point arxpm at an existing conda (or mamba) environment by name or prefix:
[environment]
kind = "conda"
name = "demo-env"
# or
# path = "/opt/conda/envs/demo-env"
Behavior:
- If
pathis provided,arxpmuses<path>/bin/pythondirectly. - Otherwise
arxpminvokesconda run -n <name> python -c "import sys; print(sys.executable)"to locate the interpreter, then installs viauv pip install --python <interp>. arxpm runandarxpm buildinvoke thearxexecutable installed beside<interp>.condamust be on PATH when onlynameis provided.
Strategy 3 — system¶
Use the Python interpreter that is already running arxpm.
[environment]
kind = "system"
Behavior:
arxpm installinstalls packages into the current Python environment usinguv pip install --python <sys.executable> ....arxpm runandarxpm buildinvoke thearxexecutable installed beside<sys.executable>.pathandnameare not allowed for this mode.
Why uv?¶
uv is used as the package installer for every strategy. It is fast, it does
not require an active venv (it accepts --python <interp>), and it is a single
static binary. arxpm healthcheck reports whether uv is reachable on your
PATH.
Tooling not managed by arxpm¶
arxpm pack and arxpm publish use Python packaging tooling from the outer
interpreter that is running arxpm. They never install build or upload tooling
into your project environment. These tools are declared as runtime dependencies
of arxpm itself, so they are always available wherever arxpm is installed.
Configure publish credentials with the ARXPM_PUBLISH_* environment variables
documented in the command reference. ARXPM_PUBLISH_REPOSITORY_URL defaults to
the official PyPI upload endpoint when unset. For repeated local publishes,
arxpm config pypi-token.<repository> stores tokens in the system keyring only
and does not fall back to plaintext files.