Skip to content

Jupyterをuvで使用する

Jupyterノートブックは、インタラクティブなコンピューティング、データ分析、および可視化のための人気のツールです。Jupyterをuvと一緒に使用する方法はいくつかあり、プロジェクトと対話するため、またはスタンドアロンツールとして使用することができます。

プロジェクト内でJupyterを使用する

プロジェクト内で作業している場合、次のコマンドを使用してプロジェクトの仮想環境にアクセスできるJupyterサーバーを起動できます。

$ uv run --with jupyter jupyter lab

デフォルトでは、jupyter labはサーバーをhttp://localhost:8888/labで起動します。

ノートブック内では、プロジェクトの他のファイルと同様にプロジェクトのモジュールをインポートできます。たとえば、プロジェクトがrequestsに依存している場合、import requestsはプロジェクトの仮想環境からrequestsをインポートします。

プロジェクトの仮想環境への読み取り専用アクセスを探している場合は、それ以上の設定は必要ありません。ただし、ノートブック内から追加のパッケージをインストールする必要がある場合は、いくつかの追加の詳細を考慮する必要があります。

カーネルの作成

ノートブック内からパッケージをインストールする必要がある場合、プロジェクト専用のカーネルを作成することをお勧めします。カーネルを使用すると、Jupyterサーバーは1つの環境で実行され、個々のノートブックはそれぞれの独立した環境で実行されます。

uvのコンテキストでは、Jupyter自体を分離された環境にインストールしながら、プロジェクトのカーネルを作成できます。たとえば、uv run --with jupyter jupyter labのように。プロジェクトのカーネルを作成することで、ノートブックが正しい環境に接続され、ノートブック内からインストールされたパッケージがプロジェクトの仮想環境にインストールされることが保証されます。

カーネルを作成するには、ipykernelを開発依存関係としてインストールする必要があります。

$ uv add --dev ipykernel

次に、projectのカーネルを作成できます。

$ uv run ipython kernel install --user --name=project

その後、サーバーを起動します。

$ uv run --with jupyter jupyter lab

ノートブックを作成する際に、ドロップダウンからprojectカーネルを選択します。その後、!uv add pydanticを使用してpydanticをプロジェクトの依存関係に追加するか、!uv pip install pydanticを使用してpydanticをプロジェクトの仮想環境にインストールしますが、プロジェクトのpyproject.tomluv.lockファイルには変更を反映しません。どちらのコマンドも、ノートブック内でimport pydanticを機能させます。

カーネルなしでパッケージをインストールする

カーネルを作成したくない場合でも、ノートブック内からパッケージをインストールできます。ただし、いくつかの注意点があります。

uv run --with jupyterは分離された環境で実行されますが、ノートブック内では!uv addおよび関連コマンドはカーネルなしでもプロジェクトの環境を変更します。

たとえば、ノートブック内で!uv add pydanticを実行すると、pydanticがプロジェクトの依存関係および仮想環境に追加され、追加の設定やサーバーの再起動なしでimport pydanticがすぐに機能します。

ただし、Jupyterサーバーが「アクティブ」な環境であるため、!uv pip installはパッケージをプロジェクト環境ではなく_Jupyter_環境にインストールします。そのような依存関係はJupyterサーバーの存続期間中は持続しますが、次回のjupyter呼び出し時には消える可能性があります。

ノートブックがpipに依存している場合(例:%pipマジックを使用)、Jupyterサーバーを起動する前にuv venv --seedを実行してプロジェクトの仮想環境にpipを含めることができます。たとえば、次のようにします。

$ uv venv --seed
$ uv run --with jupyter jupyter lab

その後、ノートブック内での%pip install呼び出しはプロジェクトの仮想環境にパッケージをインストールします。ただし、そのような変更はプロジェクトのpyproject.tomluv.lockファイルには反映されません。

スタンドアロンツールとしてJupyterを使用する

ノートブックにアドホックにアクセスする必要がある場合(つまり、Pythonスニペットをインタラクティブに実行するため)、uv tool run jupyter labを使用していつでもJupyterサーバーを起動できます。これにより、分離された環境でJupyterサーバーが実行されます。

プロジェクト環境以外でJupyterを使用する

プロジェクトに関連付けられていない仮想環境(例:pyproject.tomluv.lockがない)でJupyterを実行する必要がある場合、Jupyterを直接環境に追加できます。たとえば、次のようにします。

$ uv venv --seed
$ uv pip install pydantic
$ uv pip install jupyterlab
$ .venv/bin/jupyter lab

ここから、ノートブック内でimport pydanticが機能し、!uv pip install!pip installを使用して追加のパッケージをインストールできます。

VS CodeからJupyterを使用する

VS Codeのようなエディタ内からJupyterノートブックと対話することもできます。VS Code内でuv管理のプロジェクトをJupyterノートブックに接続するには、次のようにプロジェクトのカーネルを作成することをお勧めします。

# プロジェクトを作成します。
$ uv init project
# プロジェクトディレクトリに移動します。
$ cd project
# ipykernelを開発依存関係として追加します。
$ uv add --dev ipykernel
# プロジェクトをVS Codeで開きます。
$ code .

プロジェクトディレクトリがVS Codeで開かれたら、コマンドパレットから「Create: New Jupyter Notebook」を選択して新しいJupyterノートブックを作成できます。カーネルを選択するように求められたら、「Python Environments」を選択し、先ほど作成した仮想環境(例:.venv/bin/python)を選択します。

Note

VS Codeはプロジェクト環境にipykernelが存在することを要求します。ipykernelを開発依存関係として追加したくない場合は、uv pip install ipykernelを使用してプロジェクト環境に直接インストールできます。

ノートブック内からプロジェクトの環境を操作する必要がある場合は、uvを明示的な開発依存関係として追加する必要があるかもしれません。

$ uv add --dev uv

その後、!uv add pydanticを使用してpydanticをプロジェクトの依存関係に追加するか、!uv pip install pydanticを使用してpydanticをプロジェクトの仮想環境にインストールしますが、プロジェクトのpyproject.tomluv.lockファイルには変更を反映しません。