AphrodyBun GitHub

Runtime docs · Runtime · Process & System

Buv and PyJS

Run the UV Python package manager shipped with Bun as a plugin, and use the PyJS file extensions.

Bun ships the UV Python package and project manager (UV 0.12.24) as the uv plugin, the bun-uv executable. Run it with bun uv:

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 call.

  • Python: run Python files, embed CPython with bun:python and compile Python with bun compile.