Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Pythonのパッケージマネージャー「uv」
Search
Masafumi Abeta
October 30, 2024
Programming
450
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Pythonのパッケージマネージャー「uv」
Masafumi Abeta
October 30, 2024
More Decks by Masafumi Abeta
See All by Masafumi Abeta
GPTモデルでキャラクター設定する際の課題
abeta
0
390
GPTをLINEで使えるようにして布教した
abeta
0
220
【Nishika】プリント基板の電子部品検出
abeta
0
360
初心者向けChatGPT入門
abeta
0
290
GPT Short Talk
abeta
0
180
拡散モデルについて少しだけ
abeta
0
97
動的計画モデル
abeta
0
210
物体追跡
abeta
0
360
特徴量記述
abeta
0
230
Other Decks in Programming
See All in Programming
Built Our Own Background Agent at LayerX
layerx
PRO
10
5.2k
OpenSpecのproposalにbrainstormingを持たせてみた
tigertora7571
1
210
Laravelで学ぶ Webアプリケーションチューニング入門/web_application_tuning_101
hanhan1978
4
1.7k
AWS CDK を「作」ってみた 〜フルスクラッチで見えた CDK の裏側〜 / aws-cdk-from-scratch
gotok365
3
2.8k
PHP Application における Kubernetes 内 gRPC 通信
ganchiku
0
590
Jindong: Introducing Declarative Haptics in Compose Multiplatform
l2hyunwoo
0
110
Augmenting AI with the Power of Jakarta EE
ivargrimstad
0
550
これって Effect でできたのでは? / TSKaigi Mashup Kansai #2
susisu
0
150
言語を使う側から、作る側へ。 自作 Lisp で得た新たな気づき。
andpad
0
160
作るコストが小さくなった時代 幸せに働くために改めて考えたいこと 〜エンジニアとして価値を出し続けるために注視している二分野〜
yuppeeng
0
200
Cloudflare is Agents
chimame
0
160
ITヒヤリハットを整理してみた ~ライフサイクルと原因から考える再発防止策~
koukimiura
1
140
Featured
See All Featured
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
23k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.8k
Impact Scores and Hybrid Strategies: The future of link building
tamaranovitovic
0
380
The innovator’s Mindset - Leading Through an Era of Exponential Change - McGill University 2025
jdejongh
PRO
1
240
Site-Speed That Sticks
csswizardry
13
1.4k
Technical Leadership for Architectural Decision Making
baasie
3
470
16th Malabo Montpellier Forum Presentation
akademiya2063
PRO
0
350
B2B Lead Gen: Tactics, Traps & Triumph
marketingsoph
0
200
Making the Leap to Tech Lead
cromwellryan
135
10k
Bootstrapping a Software Product
garrettdimon
PRO
307
120k
Claude Code どこまでも/ Claude Code Everywhere
nwiizo
66
57k
How to train your dragon (web standard)
notwaldorf
97
6.7k
Transcript
Pythonのパッケージマネージャー「uv」 阿部田将史 – Masafumi Abeta 2024.10.30
© 2024 Masafumi Abeta 2 uvとは Pythonの バージョン管理 仮想環境作成 パッケージ管理
pip ✓ venv ✓ pyenv ✓ Pipenv ✓ ✓ Poetry ✓ ✓ conda ✓ ✓ ✓ uv ✓ ✓ ✓ https://github.com/astral-sh/uv
© 2024 Masafumi Abeta 3 # On macOS and Linux.
$ curl -LsSf https://astral.sh/uv/install.sh | sh # On Windows. $ powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex" # With pip. $ pip install uv # Update $ uv self update $ uv --version uv 0.4.27 uvのインストール
© 2024 Masafumi Abeta 4 $ uv python install 3.10
3.11 3.12 Searching for Python versions matching: Python 3.10 Searching for Python versions matching: Python 3.11 Searching for Python versions matching: Python 3.12 Installed 3 versions in 3.42s + cpython-3.10.14-macos-aarch64-none + cpython-3.11.9-macos-aarch64-none + cpython-3.12.4-macos-aarch64-none Pythonのインストール
© 2024 Masafumi Abeta 5 $ uv init sample --package
--python 3.12 プロジェクトの作成 sample ├── .git ├── .gitignore ├── .python-version ├── README.md ├── pyproject.toml └── src └── sample └── __init__.py [project] name = "sample" version = "0.1.0" description = "Add your description here" readme = "README.md" requires-python = ">=3.12" dependencies = [] [project.scripts] sample = "sample:main" [build-system] requires = ["hatchling"] build-backend = "hatchling.build" pyproject.toml
© 2024 Masafumi Abeta 6 $ cd sample $ uv
venv 仮想環境の作成 sample ├── .git ├── .gitignore ├── .python-version ├── .venv ├── README.md ├── pyproject.toml └── src └── sample └── __init__.py
© 2024 Masafumi Abeta 7 $ uv run example.py 3.12.6
$ uv run --python 3.10 example.py 3.10.15 スクリプト実行 import sys print(".".join(map(str, sys.version_info[:3]))) example.py
© 2024 Masafumi Abeta 8 $ uv add requests $
uv remove requests # アンインストール $ uv add flake8 --dev # 開発用インストール パッケージのインストール sample ├── .git ├── .gitignore ├── .python-version ├── .venv ├── README.md ├── pyproject.toml ├── src │ └── sample │ └── __init__.py └── uv.lock [project] name = "sample" version = "0.1.0" description = "Add your description here" readme = "README.md" requires-python = ">=3.12" dependencies = [ "requests>=2.32.3", ] [dependency-groups] dev = [ "flake8>=7.1.1", ] [project.scripts] sample = "sample:main" [build-system] requires = ["hatchling"] build-backend = "hatchling.build" pyproject.toml
© 2024 Masafumi Abeta 9 $ uv sync # pyproject.tomlの依存関係をインストール
$ uv lock # uv.lockファイルを作成 パッケージのインストール2
© 2024 Masafumi Abeta 10 $ uv tree Resolved 6
packages in 1ms sample v0.1.0 └── requests v2.32.3 ├── certifi v2024.8.30 ├── charset-normalizer v3.4.0 ├── idna v3.10 └── urllib3 v2.2.3 依存関係の表示
© 2024 Masafumi Abeta 11 $ uv pip install ruff
Resolved 1 package in 43ms Installed 1 package in 1ms + ruff==0.7.1 ただしuvの管理から外れてしまう pip インターフェース(最後の手段) [project] name = "sample" version = "0.1.0" description = "Add your description here" readme = "README.md" requires-python = ">=3.12" dependencies = [ "requests>=2.32.3", ] [project.scripts] sample = "sample:main" [build-system] requires = ["hatchling"] build-backend = "hatchling.build" pyproject.toml Pyproject.toml にもuv.lockに も反映されない
© 2024 Masafumi Abeta 12 右のように書き換えてからsyncコマンド $ uv sync PyTorchのインストール
(--index-urlの追加) [project] name = "sample" version = "0.1.0" description = "Add your description here" readme = "README.md" requires-python = ">=3.12" dependencies = [ "requests>=2.32.3", "torch==2.5.1+121" ] ~省略~ [tool.uv.source] torch = { index = "pytorch" } [[tool.uv.index]] name = "pytorch" url = "hrrps://dounload.pytorch.org/whl/cu121" explict = true pyproject.toml
© 2024 Masafumi Abeta 13 $ uv venv $ source
.venv/bin/activate $ uv sync $ uv run mim install mmengine $ uv run mim install "mmcv==2.1.0" $ git clone https://github.com/open-mmlab/mmdetection.git $ cd mmdetection $ uv pip install -v -e . $ uv run demo/image_demo.py demo/demo.jpg rtmdet-s (例)MMDetectionのインストール [project] name = “sample" version = "0.1.0" description = "Add your description here" readme = "README.md" requires-python = "==3.10.12" dependencies = [ "wheel>=0.44.0", "numpy==1.26.4", "torch==2.1.2+cu121", "openmim", "setuptools>=75.3.0", "importlib-metadata>=8.5.0", "platformdirs>=4.3.6", ] [tool.uv.sources] torch = { index = "pytorch" } [[tool.uv.index]] name = "pytorch" url = "https://download.pytorch.org/whl/cu121" explicit = true pyproject.toml
© 2024 Masafumi Abeta 14 その他できること • パッケージのビルド • CLIツールのインストール
他にもあるので公式をチェック https://docs.astral.sh/uv/ 良いところ • Pythonのバージョン管理ができる • パッケージ管理ができる • パッケージの依存関係まで分かる • 動作がめっちゃ速い 不足に感じるところ • editableモード等、複雑なインストールに対応していない(機械学習PJではありがち) • インストール順があるものは対応できない(flash-attention) • 開発が活発なので仕様が大きく変わるかも(3日に一回パッチアップデート) まとめ
15 END