Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

Contributor Local Installation

Set up a PyRIT development environment on your local machine.

Setup with uv

uv is a fast Python package installer and resolver that we use for PyRIT development.

Why uv?

Prerequisites

  1. Install uv: Download from https://github.com/astral-sh/uv or use: for windows:

    powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"

    for macOS and Linux

    curl -LsSf https://astral.sh/uv/install.sh | sh

    or

    wget -qO- https://astral.sh/uv/install.sh | sh
  2. Python 3.12: uv will automatically download and use the correct Python version based on .python-version

  3. Git. Git is required to clone the repo locally. It is available to download here.

    git clone https://github.com/microsoft/PyRIT
  4. Node.js and npm. Required for building the TypeScript/React frontend. Download Node.js (which includes npm). Version 18 or higher is recommended.

Installation

  1. Navigate to the directory where you cloned the PyRIT repo.

  2. The repository includes a .python-version file that pins Python 3.12. Run:

uv sync

This command will:

  1. Verify Installation

uv pip show pyrit

You should see output showing the most recent PyRIT version and your Python dependencies.

VS Code Integration

VS Code should automatically detect the .venv virtual environment. If not:

  1. Press Ctrl+Shift+P

  2. Type “Python: Select Interpreter”

  3. Choose .venv\Scripts\python.exe

Running Jupyter Notebooks

uv sync already installs a python3 kernel inside .venv, and Jupyter binds it to whichever interpreter is running it, so notebooks work out of the box with no kernel registration step.

Start the server using

uv run jupyter lab

or using VS Code, open a Jupyter Notebook (.ipynb file) window, in the top search bar of VS Code, type >Notebook: Select Notebook Kernel > Python Environments... to choose the .venv interpreter for this checkout. You can also choose a kernel with the “Select Kernel” button on the top-right corner of a Notebook.

This will be the kernel that runs all code examples in Python Notebooks.

If you do want a separately named kernel, scope it to the virtual environment:

uv run python -m ipykernel install --sys-prefix --name=pyrit-dev

Avoid --user with a fixed name if you work in more than one clone or git worktree. A --user kernel is installed machine-wide, so every checkout that registers the same name overwrites the others, and the survivor points at a single interpreter. Notebooks then execute against an unrelated checkout, or fail with FileNotFoundError: [WinError 2] once that checkout is deleted. See Jupyter setup if you hit this.

Running Python Scripts

Use uv run to execute Python with the virtual environment:

uv run python your_script.py

Running Tests

uv run pytest tests/

Running Specific Test Files

uv run pytest tests/unit/test_something.py

Using PyRIT CLI Tools

uv run pyrit_scan --help
uv run pyrit_shell

Running Jupyter Notebooks

uv run jupyter lab

Installing Additional Extras

PyRIT has several optional dependency groups. Install them as needed:

# For Hugging Face models
uv sync --extra huggingface

# For all extras
uv sync --extra all

# Multiple extras (dev dependencies are always included automatically)
uv sync --extra playwright --extra gcg

Development Workflow

Adding New Dependencies

Edit pyproject.toml to add dependencies, then run:

uv sync

Updating Dependencies

uv lock --upgrade
uv sync

Running Code Formatters

uv run ruff format .
uv run ruff check --fix .

Running Type Checker

uv run ty check pyrit/

Pre-commit Hooks

uv run pre-commit install
uv run pre-commit run --all-files

Next Step: Configure PyRIT

After installing, configure your AI endpoint credentials.

Troubleshooting

Having issues? See the Local Dev Troubleshooting guide for common problems and solutions.