はじめに
この記事はC3 Advent Calender 2025シリーズ2の23日目の記事です。
今回ははじめてuvを使ううえで、
よく使いそうなコマンドを紹介します。
Pythonで他のツールを使って、 バージョン管理 や パッケージ管理 をしたことがある方は、
より詳しく書かれているため、次の記事を参照することをおすすめします。
動作環境
- WSL Ubuntu 22.04.5
- uv 0.9.8
WSLを利用している方は
curl -LsSf https://astral.sh/uv/install.sh | sh
でuvのインストールが可能です。
他のuvのインストール方法に関しては、先ほどの記事やドキュメントに記載されています。
流れで使えるコマンド一覧
1. プロジェクト作成
プロジェクトを作成するコマンド
uv init myproject
cd myproject
作成した時点のディレクトリ構成
myproject/
├── README.md
├── main.py
└── pyproject.toml
2. uv自体のバージョン確認
uv自体のバージョンを確認できるコマンド
uv self version
出力例
uv 0.9.8
3. uvが認識しているPythonのバージョン一覧を確認するコマンド
uvが認識している(利用・取得可能な)Pythonのバージョン一覧
を確認するためのコマンド
uv python list
表示内容は環境によって変わります。
表示内容の例
cpython-3.11.11-linux-x86_64-gnu /home/<username>/.local/share/uv/python/cpython-3.11.11-linux-x86_64-gnu/bin/python3.11
cpython-3.11.9-linux-x86_64-gnu /home/<username>/.pyenv/shims/python3.11
cpython-3.11.9-linux-x86_64-gnu /home/<username>/.pyenv/shims/python3
cpython-3.11.9-linux-x86_64-gnu /home/<username>/.pyenv/shims/python
cpython-3.10.19-linux-x86_64-gnu <download available>
cpython-3.10.12-linux-x86_64-gnu /usr/bin/python3.10
cpython-3.10.12-linux-x86_64-gnu /usr/bin/python3 -> python3.10
4. プロジェクトで使用しているPythonのバージョン確認
ls -a
を使い、隠しファイルを表示し、
. .. .git .gitignore .python-version README.md main.py pyproject.toml
そのなかにある.python-versionというファイルを開くと、
使用しているPythonのバージョンが記載されています。
5. パッケージの追加・削除
パッケージの追加と削除の方法です。
uv addで追加、uv removeで削除が可能です。
uv add パッケージ名
uv remove パッケージ名
例:requests
uv add requests
uv remove requests
パッケージを追加すると自動で .venv が作成されて、
依存関係は uv.lock に記録されます。
uv add パッケージ名 やuv remove パッケージ名のみを使う方法を個人的に推奨します。
新規プロジェクトでuvを使う場合は、
uv pipコマンドやuv run pipコマンドを使うと依存管理が分散してしまうため、
uv add / uv remove に統一するのがおすすめです。
なぜpip関連のコマンドがあるかというと、
requirements.txtでもともと使っていたものを使えるようにするためだと、
以下の記事から解釈しています。
6. uvで追加したパッケージの依存関係確認
uv addで追加したパッケージについて、
依存関係がどのようになっているかを見ることが出来るコマンド
uv tree
先ほどのrequestsというパッケージを追加した状態で、
パッケージの依存関係を確認した結果が以下です。
Resolved 6 packages in 0.90ms
myproject v0.1.0
└── requests v2.32.5
├── certifi v2025.11.12
├── charset-normalizer v3.4.4
├── idna v3.11
└── urllib3 v2.5.0
7. pythonファイルの実行
uv initを使用したときに生成されたmain.pyを、uvの環境を使って実行します
uv run python main.py
main.pyを編集していない、
初期状態での出力例が以下です。
Hello from myproject!
npm との比較
npm を使用したことのある身として、uv との違いを簡単に比較しています。
| 項目 | npm | uv |
|---|---|---|
| 通常依存 | npm install axios |
uv add requests |
| 開発依存 | npm install -D eslint |
uv add --dev ruff |
| 依存定義 | package.json |
pyproject.toml |
| ロックファイル | package-lock.json |
uv.lock |
| エイリアス管理 |
"scripts" でコマンド定義可能 |
現状プロジェクト用エイリアス機能はない(執筆時点) |
devオプション参考記事
おわりに
これまで使っていたツールとの違いについて、
- Pythonで使っていたpipと何が変わったか
- JSの開発で使っていたnpmとどこが違うのか
をこの記事を書くなかで理解を進められました。
明日の記事は、ねぎまとさんの「疑似乱数とは~乱数が表現する理不尽さ~」です。
これからのみなさんの開発に役立ててくださると幸いです。
読んでいただきありがとうございました!