0. はじめに
以前書いたryeの記事は以下ですがRyeの公式によると、いずれはuvに統合していくとのことなので私もつい最近移行しました。
その時のメモを後で見返すようにここでまとめておきます
結論から言うとRyeとuvはほとんど同じ使い勝手でしたでの、今からRyeを入れようと考えている方は公式アナウンスに従い、このuvの方がいいと感じます
※ただしRyeの記事のように他の手法との比較はしていませんので、初心者の方はRyeの記事を一通り(実行しなくてもいいので)見ていただいてからの方が少し理解ができるかと思います
公式ドキュメントは以下
- 動作環境
・ OS : Windows11 pro
・ uv : 0.5.5
1. インストール
WindowsなのでPowershellを開いて以下のコマンドを実行するだけ
powershell -c "irm https://astral.sh/uv/install.ps1 | iex"
インストール完了後に、コマンドプロンプトを起動してuvコマンドを実行し、問題がないことを確認する
uv
- - - (実行結果)- - -
Usage: uv [OPTIONS] <COMMAND>
Commands:
run Run a command or script
init Create a new project
・・略
2. 使い方
-
今回の条件
・ プロジェクト名 : sampleプロジェクト
・ pythonバージョン : 3.11.1を使う
・ ライブラリ : ipykernelとPytorch(cu121)を使う
☝の条件に合うようにプロジェクトと環境を作成していくのをゴールとします。
2-1. 今使えるpythonの確認と必要なversionの導入
cmdを開き、以下コマンドで使用できるpythonの一覧を表示
※ここではuv以外のpythonも出てくる(condaとかpyenvとか)ので、uvのみにしたければ--only-installed
をつければいい(どうやらuvの用意するpython以外も使えるらしい)
; condaとかも含む一覧
uv python list
; 純粋にuvのみの一覧
uv python list --only-installed
その後一覧にない場合は自分の必要なpythonをuv python install ***
でDLする
; uvからpython3.11.1をインストール
uv python install 3.11.1
- - - (実行結果)- - -
Installed Python 3.11.1 in 6.63s
+ cpython-3.11.1-windows-x86_64-none
なお、uvからどのバージョンがDLできるかは以下のコマンドで確認可能
uv python list --all-versions
2-2. プロジェクト作成
cmdを開き、まずはプロジェクトを作成したいディレクトリまでcdで移動しておく。今回はデスクトップのpython_projectというディレクトリの中にsampleというプロジェクトを構築する。
ryeと違い、uvはuv init project名 -p ***
とここで使用するpythonのバージョンも指定するといい。
※もしここで-pを忘れてuv init
だけのコマンドをした場合はおそらくその時の最新のPythonにpyproject.toml
で限定されている為、後で書き換えればいい(書き換えないと古いバージョンは拒否される)
; python_projectフォルダへcd
cd C:\Users\***\Desktop\python_project
; versionを指定してproject作成 & sampleフォルダへcdしておく
uv init sample -p 3.11.1 && cd sample
2-3. ライブラリ導入~torchのGPU起動確認
今回使用するtorch(cuda使用)に関しては少し面倒。
pyproject.tomlを開き、以下の[tool.uv.sources]以下を使いたいtorchに変換してコピペする ※この例ではCuda12.1なのでcu121(変更は3か所あります)
なお、tool.uv.indexだけの記載だとうまくいかないので注意
[project]
name = "sample"
version = "0.1.0"
description = "Add your description here"
readme = "README.md"
requires-python = ">=3.11.1"
dependencies = []
[tool.uv.sources]
torch = [
{ index = "pytorch-cu121"},
]
[[tool.uv.index]]
name = "pytorch-cu121"
url = "https://download.pytorch.org/whl/cu121"
explicit = true
これで準備ができたので、rye同様addしてsyncすればOK!
; ipykernelとPytorchを依存関係にadd
uv add ipykernel torch
; プロジェクトに同期
uv sync
これで使いたいライブラリが加わったので、後は仮想環境に入って本当にtorchがGPUを使えるか見てみる
; 仮想環境に入る
.venv\Scripts\activate
; python起動
python
; python起動後はtorchのGPU使えるか確認
import torch
print(torch.cuda.is_available())
- - - (実行結果)- - -
True
無事にtorchのGPU確認もとれてますね
なお、torchはプロジェクトの依存関係を無視する場合は以下のコマンド(uv pip install)だともっと簡単に導入可能だが、uvを使う意味が少し薄れるのでオススメはしない
uv pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121
2-4. uvコマンド集
個人的によく使いそうなやつをまとめておく
コマンド | 内容 |
---|---|
uv init *** | uvでプロジェクト***を作成(仮想環境venvも自動的に作られます) |
uv init *** -p 3.10 | uvでプロジェクト***を作成しPythonバージョンも指定(例は3.10) |
uv python list | uvで設定できるなpythonバージョン一覧 |
uv python list --all-versions | uvでDL可能なpythonバージョン一覧 |
uv python pin *** | プロジェクトで使用するpythonのバージョンを指定※ただしrequires-pythonの条件に従う為注意 |
uv add *** | プロジェクトに依存関係を追加 |
uv add "ipykernel==6.29.4" | バージョン指定のadd |
uv remove *** | プロジェクトから依存関係を削除 |
uv sync | プロジェクトの依存関係を同期 |
uv run **.py | uvでpythonスクリプト(.py)を実行する |
uv pip install *** | uvでpipコマンドを実行する |
uv pip list | uvのpipでインストールされたもの一覧 ※uv pipを使用してなくても使えます(uv addもこれで確認可能) |
uv --version | uvのバージョン確認 |
uv self update | uvを最新バージョンにする |
3. さいごに
正直言うと私が使っている範囲ではryeと使い勝手は変わりません。
が、今後は統合され、こちらだけアップデートされていくそうなのでこちらに完全に乗り換えます。
今度こそこれでパッケージ管理争いが完結することを願って