---
title: Buv and PyJS
description: Run the UV Python package manager shipped with Bun as a plugin, and use the PyJS file extensions.
---

Bun ships the [UV](https://github.com/astral-sh/uv) Python package and project manager (UV 0.12.24) as the `uv` [plugin](/runtime/bun-plugin), the `bun-uv` executable. Run it with `bun uv`:

```sh terminal icon="terminal"
bun uv --version
bun uv venv
bun uv sync
bun uv run python main.py
bun uv pip install --python .venv/bin/python requests
```

On Windows, use `.venv/Scripts/python.exe` for a virtual environment's Python executable.

The same executable can be installed under the names `buv` and `pyjs`; `buv uv <command>` and `pyjs uv <command>` behave like `bun uv <command>`. When the executable is invoked as `uv` or `uvx` (for example through a renamed copy or a link), it behaves like the standalone `uv` and `uvx` commands.

`bun uv` dispatches to `bun-uv` before the JavaScript engine starts; the first use downloads the plugin matching the running Bun. It preserves UV's arguments, Python discovery, project configuration, cache and exit statuses. UV's self-update command is disabled; update UV by upgrading Bun.

## PyJS files

PyJS combines the JavaScript and Python surface. Files ending in `.pyjs`, `.pyts` and `.pytsx` use Bun's JavaScript, TypeScript and TSX loaders respectively. Python code runs only through an explicit [`bun:python`](/runtime/python) call.

## Related

- [Python](/runtime/python): run Python files, embed CPython with `bun:python` and compile Python with `bun compile`.
