4
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Pythonのパッケージ管理「uv」のメモ(随時更新)

Last updated at Posted at 2024-12-01

0. はじめに

以前書いたryeの記事は以下ですがRyeの公式によると、いずれはuvに統合していくとのことなので私もつい最近移行しました。
その時のメモを後で見返すようにここでまとめておきます

結論から言うとRyeとuvはほとんど同じ使い勝手でしたでの、今からRyeを入れようと考えている方は公式アナウンスに従い、このuvの方がいいと感じます
※ただしRyeの記事のように他の手法との比較はしていませんので、初心者の方はRyeの記事を一通り(実行しなくてもいいので)見ていただいてからの方が少し理解ができるかと思います

公式ドキュメントは以下

  • 動作環境
    ・ OS : Windows11 pro
    ・ uv : 0.5.5

1. インストール

WindowsなのでPowershellを開いて以下のコマンドを実行するだけ

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だけの記載だとうまくいかないので注意

pyproject.toml
[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と使い勝手は変わりません。
が、今後は統合され、こちらだけアップデートされていくそうなのでこちらに完全に乗り換えます。
今度こそこれでパッケージ管理争いが完結することを願って

4
8
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?