**Warning: This documentation refers to experimental features that may change.**
# Toolchains
A Python toolchain is composed of a Python interpreter (i.e. the `python` executable), the standard library, and other supporting files. It is common for an operating system to come with a Python toolchain installed and there are many tools to help manage Python toolchains.
## Requesting a toolchain
uv will automatically download a toolchain if it cannot be found.
In stable commands, this behavior requires enabling preview mode. For example, when creating a virtual environment:
```bash
uv venv --preview --python 3.11.6
```
uv will ensure that Python 3.11.6 is available — downloading and installing it if necessary — then create the virtual environment with it.
For commands that are in preview, like `uv sync`, preview behavior is always on.
```bash
uv sync --python 3.12.3
```
Many toolchain request formats are supported:
-`<version>` e.g. `3`, `3.12`, `3.12.3`
-`<version-specifier>` e.g. `>=3.12,<3.13`
-`<implementation>` e.g. `cpython` or `cp`
-`<implementation>@<version>` e.g. `cpython@3.12`
-`<implementation><version>` e.g. `cpython3.12` or `cp312`
-`<implementation><version-specifier>` e.g. `cpython>=3.12,<3.13`
-`<implementation>-<version>-<os>-<arch>-<libc>` e.g. `cpython-3.12.3-macos-aarch64-none`
At this time, only CPython downloads are supported. However, PyPy support is planned.
## Installing a toolchain
Sometimes it is preferable to install the toolchains before they are needed.