uv は python の環境・パッケージマネージャ。
- Rust で書かれておりめちゃくちゃ速い
- pip を置き換えることを目標としている
- pixi は、同じように Rust で書かれた次世代パッケージマネージャであり、conda を置き換えるもの
Rye は uv に引き継がれたらしい。
uv venv で環境を作り、 .venv/bin/activate で作った環境に入る。その環境内で pip の代わりに uv pip を使う。環境の中ではその環境から抜け出す deactivate コマンドが使用できる。
.venv/bin/activate を毎回入力するのは面倒な場合、ヘルパー関数を作るとよい。
例えば以下の venv 関数は、ディレクトリ構造を遡りながら uv の環境を探して activate を行うため、プロジェクトディレクトリの中ならどこで使っても環境に入れる。
#!/bin/zsh
venv() {
PWD_ORIG=$PWD
if ! command -v uv > /dev/null 2>&1; then
echo "uv command not found. Check if you're in the right environment"
return 1
fi
while true; do
if [[ -f .venv/bin/activate ]]; then
break
fi
if [[ $PWD == "/" ]]; then
printf '\033[1;31;49m%s\033[m\n' 'No virtualenv found'
\cd $PWD_ORIG
return 1
fi
\cd ..
done
source .venv/bin/activate
if [[ $PWD != $PWD_ORIG ]]; then
printf "\033[6;31;50mvenv at a different directory\033[m\n"
fi
printf 'venv at \033[1;32;49m%s\033[m\n' "$PWD"
\cd $PWD_ORIG
}python バージョンの指定
環境を作るときに python のバージョンを指定するには uv venv --python 3.12