はじめに
uv は Python のパッケージ管理やプロジェクト管理、仮想環境構築などを簡単に行うためのツールです。
この記事では以下について書きます。
- 初めて uv を使うときにやること
- uv でスクリプトを実行する
- uv で Python バージョンを指定する
環境
WSL2
Ubuntu 22.04.5
初めて uv を使うときにやること
uv をインストールします。
curl -LsSf https://astral.sh/uv/install.sh | sh
インストールされたことを確認します。
$ uv -V
uv 0.8.20
ディレクトリを作成し、そこで初期化コマンドである uv init
を実行します。
mkdir uv-demo
cd uv-demo
uv init
実行後、main.py や pyproject.toml などが作成されます。
uv でスクリプトを実行する
自動で作成された以下の main.py を実行します。
def main():
print("Hello from uv-demo!")
if __name__ == "__main__":
main()
uv run
により仮想環境が自動で作成され、スクリプトが実行されます。
$ uv run main.py
Using CPython 3.10.12 interpreter at: /usr/bin/python3.10
Creating virtual environment at: .venv
Hello from uv-demo!
uv run python -m
によりモジュールとして実行されます。
$ uv run python3 -m main
Hello from uv-demo!
依存関係がある場合
以下のようにサードパーティーライブラリがある場合、pyproject.toml に記載します。
import requests
def fetch_data(url):
response = requests.get(url)
print(f"Response status: {response.status_code}")
def main():
print("Hello from uv-demo!")
fetch_data("https://example.com")
if __name__ == "__main__":
main()
[project]
name = "uv-demo"
version = "0.1.0"
description = "Add your description here"
readme = "README.md"
requires-python = ">=3.10"
dependencies = [
"requests>=2.32.5" # ここに記載
]
その後 uv run
で実行すると依存関係を解決してからスクリプトが実行されます。このとき自動で uv.lock というファイルが作成されます。
$ uv run main.py
Installed 5 packages in 28ms
Hello from uv-demo!
Response status: 200
手動で uv.lock を作成するには以下のコマンドを実行します。
uv lock
uv.lock をバージョン管理している場合は、以下のコマンドにより uv.lock から依存関係をインストールします。
uv sync
pyproject.toml 更新後、uv.lock を更新するには以下のコマンドを実行します。
uv lock --upgrade
インストールされたライブラリ一覧を表示するには以下のコマンドを実行します。
$ uv pip list
Package Version
------------------ --------
certifi 2025.8.3
charset-normalizer 3.4.3
idna 3.10
requests 2.32.5
urllib3 2.5.0
Python バージョンを指定する
これまでは python3.10 を使用していましたが、python3.12 を使用してみます。まずは既存の .venv と uv.lock を削除します。
rm -rf .venv uv.lock
以下のコマンドで特定の Python バージョンをインストールします。
uv python install 3.12
pyproject.toml を以下のように書き換えます。
[project]
name = "uv-demo"
version = "0.1.0"
description = "Add your description here"
readme = "README.md"
- requires-python = ">=3.10"
+ requires-python = ">=3.12"
dependencies = [
"requests>=2.32.5"
]
.python-version も使用するバージョンに書き換えます。
- 3.10
+ 3.12
Python バージョンを確認します。
$ uv run python -V
Python 3.12.11
参考