# First steps with uv

## Check the version

After [installing uv](./installation.md), check that it works from the CLI:

```bash
uv version
```

The installed version should be displayed.

## uv's interfaces

uv's commands can be grouped into a few sections.

### Project management

These commands are intended for managing development of a Python project. In these workflows, management of the virtual environment is done automatically by uv.

- `uv add`
- `uv remove`
- `uv sync`
- `uv lock`

See the documentation on [projects](./preview/projects.md) for more details on getting started.

### Toolchain management

These commands are used to manage Python itself. uv is capable of installing and managing multiple Python versions.

- `uv python install`
- `uv python list`
- `uv python find`

See the documentation on [toolchains](./preview/toolchains.md) for more details on getting started.

### Command-line tool management

These commands are used to manage command-line tools written in Python.

- `uv tool run`

See the documentation on [tools](./preview/tools.md) for more details on getting started.

### Low-level plumbing commands

The commands in this group allow manual management of environments and packages. They are intended to be used in legacy workflows or cases where the high-level commands do not provide enough control.

This command is designed as replacement for the Python `venv` and `virtualenv` modules:

- `uv venv`

These commands are designed as replacements for `pip`:

- `uv pip install`
- `uv pip show`
- `uv pip freeze`
- `uv pip check`
- `uv pip list`
- `uv pip uninstall`

These commands are designed as replacements for `pip-tools`:

- `uv pip compile`
- `uv pip sync`

This command is designed as a replacement for `pipdeptree`:

- `uv pip tree`

Please note these commands do not exactly implement the interfaces and behavior of the tools that informed their design. Consult the [pip-compatibility guide](./pip/compatibility.md) for details on differences.
