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