Skip to content

Ubuntu 22.04.4LTS に uv を入れて Python のパッケージを管理する

比較的新しい Python のパッケージ管理ツールに uv があります。 Rye Grows With UV には以下の記載があります。

Two weeks ago I asked the question again about What Rye should be. There has been one thing that I have not publicly shared before and that is that ever since Rye exists I have also been talking to Charlie Marsh about Python packaging and Python tooling. It turns out that we had some shared ideas of what an ideal Python tooling landscape would look like. That has lead to some very interesting back and forths. To make a potentially very long story short: Together with Astral's release of uv they will take stewardship of Rye. For the details read on.

今回は Ubuntu 24.04.4LTS に uv を入れる手順と基本的な使い方をメモしておきます。 尚、uv で作成した仮想環境へ切り替える際は direnv が便利です。 direnv は過去に以下のメモで触れています。

検証環境

対象 バージョン
Ubuntu 24.04.4LTS
uv 0.1.32

direnv のインストール

uv で作成した仮想環境を手動で有効化するのはやや手間です。 これを自動化する為に direnv をインストールします。 インストールに必要なコマンドを羅列すると以下の通りです。

curl -L https://github.com/direnv/direnv/releases/download/v2.34.0/direnv.linux-amd64 -o /usr/local/bin/direnv && \
chmod 755 /usr/local/bin/direnv && \
cat << 'EOF' >> ~/.bashrc
# direnv
export EDITOR=vim
eval "$(direnv hook bash)"
EOF

プロジェクトディレクトリを作成するごとに「Python 用仮想環境を作成し」「direnv 用の設定ファイルを配置する」のは面倒です。 この作業を実行するスクリプトを用意しておきます。

cat << 'EOF' > /usr/local/bin/venv
#!/bin/sh

uv venv
echo 'source .venv/bin/activate' > .envrc
direnv allow
.venv/bin/python3 -m pip install --upgrade pip
EOF
chmod 755 /usr/local/bin/venv

インストール

インストールは下記を実行するだけです。

curl -LsSf https://astral.sh/uv/install.sh | sh
source $HOME/.cargo/env
# uv --version
uv 0.1.32

仮想環境の作成

仮想環境の作成は以下を実行します。 爆速です! デフォルトでは .venv というディレクトリが作成されます。

uv venv

(.venv では無く) 仮想環境用のディレクトリ名を指定するには以下のように実行します。

uv venv my-venv

パッケージのインストール

uv は同梱されている独自の pip を利用します。 uv 経由でパッケージをインストールするには uv pip install [PACKAGE] を実行します。 爆速です!

uv pip install pandas

requirements.txt に記載されたパッケージ群をインストールするには以下を実行します。

uv pip install -r requirements.txt

インストール済みパッケージの確認

uv でインストールしたパッケージの一覧を表示するには uv pip list を実行します。

uv pip list

実際の実行例は以下の通りです。

# uv pip list
Package         Version
--------------- -----------
numpy           1.26.4
pandas          2.2.2
python-dateutil 2.9.0.post0
pytz            2024.1
six             1.16.0
tzdata          2024.1