Documentation Index
Fetch the complete documentation index at: https://mintlify.com/astral-sh/uv/llms.txt
Use this file to discover all available pages before exploring further.
Integrate uv with Jupyter notebooks for interactive Python development, data analysis, and visualization with full project environment support.
Using Jupyter in a Project
Run Jupyter with access to your project’s virtual environment:
uv run --with jupyter jupyter lab
This starts Jupyter Lab at http://localhost:8888/lab with access to your project’s dependencies.
Importing Project Dependencies
Within a notebook, you can import your project’s modules directly:
import requests # Imports from project's virtual environment
import pandas as pd
from myproject import my_module
Creating a Kernel
For projects requiring package installation from notebooks, create a dedicated kernel:
Add ipykernel as dev dependency
Create the kernel
uv run ipython kernel install --user --env VIRTUAL_ENV $(pwd)/.venv --name=project
Replace project with your desired kernel name.Start Jupyter
uv run --with jupyter jupyter lab
Select kernel in notebook
When creating a new notebook, select the project kernel from the kernel dropdown menu.
Installing Packages with a Kernel
Once the kernel is configured, install packages from within notebooks:
# Add to project dependencies (updates pyproject.toml and uv.lock)
!uv add pydantic
# Install to virtual environment only (no project updates)
!uv pip install pydantic
Both commands make the package immediately available:
Without a Kernel
You can still install packages without creating a kernel, but with some caveats:
Using uv add
# Modifies project environment and files
!uv add pydantic
import pydantic # Works immediately
Using uv pip install
# Installs to Jupyter's environment (temporary)
!uv pip install pydantic
Without a kernel, !uv pip install installs packages into Jupyter’s isolated environment, not your project. These packages may disappear when Jupyter restarts.
Using pip Magic with Seed Environment
For notebooks using the %pip magic:
Create seeded virtual environment
Start Jupyter
uv run --with jupyter jupyter lab
Use pip magic in notebooks
%pip install requests
import requests
Packages installed with %pip won’t be reflected in pyproject.toml or uv.lock.
Standalone Jupyter
Run Jupyter without a project for ad-hoc analysis:
This creates an isolated Jupyter environment unrelated to any project.
Non-Project Virtual Environments
Use Jupyter in a virtual environment without a project structure:
uv venv --seed
uv pip install pydantic jupyterlab
.venv/bin/jupyter lab
uv venv --seed
uv pip install pydantic jupyterlab
.venv\Scripts\jupyter lab
Install packages using either method:
!uv pip install requests
# or
!pip install requests
VS Code Integration
Use Jupyter notebooks within VS Code with uv-managed projects:
Create project with ipykernel
uv init project
cd project
uv add --dev ipykernel
Create notebook
Open the command palette and select “Create: New Jupyter Notebook”.
Select kernel
When prompted for a kernel, choose “Python Environments” and select your virtual environment:
- macOS/Linux:
.venv/bin/python
- Windows:
.venv\Scripts\python
Installing Packages in VS Code
For full environment manipulation, add uv as a dev dependency:
Then use in notebooks:
# Add to project dependencies
!uv add pydantic
# Install without updating project files
!uv pip install pydantic
VS Code requires ipykernel in the project environment. If you prefer not to add it as a dev dependency, install it directly: uv pip install ipykernel
Common Workflows
Data Science Project
# Set up project
uv init data-analysis
cd data-analysis
uv add pandas numpy matplotlib seaborn
uv add --dev ipykernel jupyter
# Create kernel
uv run ipython kernel install --user --env VIRTUAL_ENV $(pwd)/.venv --name=data-analysis
# Start Jupyter
uv run jupyter lab
Quick Exploration
# Create temporary environment
uv venv --seed
source .venv/bin/activate # or .venv\Scripts\activate on Windows
# Install tools
uv pip install jupyterlab pandas
# Start Jupyter
jupyter lab
Reproducible Research
# Project with locked dependencies
uv init research-project
cd research-project
uv add pandas numpy scipy matplotlib jupyter ipykernel
# Lock dependencies
uv lock
# Share with collaborators (they run)
uv sync --locked
uv run jupyter lab
Best Practices
- Use kernels for projects requiring package installation from notebooks
- Pin Jupyter version in
pyproject.toml for reproducibility
- Use
uv add to ensure dependencies are tracked in your project
- Avoid
%pip magic unless using a seeded environment
- Add ipykernel as a dev dependency for VS Code compatibility
- Create kernel per project to avoid environment conflicts