# How to install Python CLI tools without Python


[uvx.sh](https://uvx.sh) provides installation scripts for any Python tool on PyPI. Use it to install tools like ruff, pre-commit, or pytest without having [uv](https://pydevtools.com/handbook/reference/uv.md) or Python already installed.

## Installing a Tool

Replace `{package}` with any PyPI package name:

```bash
curl -LsSf uvx.sh/{package}/install.sh | sh
```

For example, to install ruff:

```bash
curl -LsSf uvx.sh/ruff/install.sh | sh
```
Replace `{package}` with any PyPI package name:

```powershell
powershell -ExecutionPolicy ByPass -c "irm https://uvx.sh/{package}/install.ps1 | iex"
```

For example, to install ruff:

```powershell
powershell -ExecutionPolicy ByPass -c "irm https://uvx.sh/ruff/install.ps1 | iex"
```
## Installing a Specific Version

Add the version number to the URL path:

```bash
curl -LsSf uvx.sh/ruff/0.8.3/install.sh | sh
```

## Forcing Reinstallation

To overwrite an existing installation, pass the `--force` flag:

```bash
curl -LsSf uvx.sh/ruff/install.sh | sh -s -- --force
```

## Using a Custom Package Index

To install from a private or alternative package index:

```bash
curl -LsSf uvx.sh/cmake/install.sh | sh -s -- --index https://download.pytorch.org/whl/cpu
```

## Learn More

- [uv: A Complete Guide](https://pydevtools.com/handbook/explanation/uv-complete-guide.md) covers what uv does, how fast it is, the core workflows, and recent releases.
- [uvx.sh](https://uvx.sh)
- [uvx.sh: Install Python tools without uv or Python](https://pydevtools.com/blog/uvx-sh-install-python-tools-without-uv-or-python.md)
- [How to install uv](https://pydevtools.com/handbook/how-to/how-to-install-uv.md)
