2025年のPython環境はここまで 簡単 になりました!

環境構築ツールパビリオン クイックツアー

2025/09/06 大吉祥寺.pm LT nikkie

「2025年の今、みんなに聞いてほしいこと」(プロポーザルのテーマ

  • 2025年時点のPython環境が著しく簡単になっていることを全力で伝えます(プロポーザル

  • 2025年は 大阪・関西万博 の年です

この5分だけ ここは万博 です

「うわ〜!大屋根リングだ〜〜」

Python環境構築パビリオン🏛️

「興奮してきたな。入ってみよう。ウィーン」

本パビリオンは、Python環境の パラダイムシフト を展示しています

  • 前説

  • uvを使った3つの展示

前説:Pythonとライブラリ

Web開発・機械学習・自動化などなど、便利なライブラリが PyPI にたくさん公開されているPythonなのですが...

ライブラリはどこにインストールされるか

  • インストール先は グローバルに1箇所site-package

  • 1つのPython処理系に、同じライブラリのバージョン違いが共存できない

仮想環境 という ディレクトリ

  • 💡ライブラリのインストール先(site-package)を都度作る

  • pnpmの node_modules やcomposerの vendor に相当

  • ライブラリの バージョン違いを可能に する

仮想環境 人力 管理の時代💪

$ python -m venv .venv --upgrade-deps  # 1
$ source .venv/bin/activate  # 2
(.venv) $ python -m pip install openai  # 3

私が7-8年前に入門したときの方法(Pythonチュートリアル

1. 仮想環境 .venv ディレクトリを作る

Python処理系は前提 で、標準ライブラリの venv 使用

$ python -m venv .venv --upgrade-deps  # 1
$ source .venv/bin/activate  # 2
(.venv) $ python -m pip install openai  # 3

2. 1でできたシェルスクリプトを 俺たちが毎回叩く!(人力)

環境変数 PATH の更新など:「仮想環境を有効化」

$ python -m venv .venv --upgrade-deps  # 1
$ source .venv/bin/activate  # 2
(.venv) $ python -m pip install openai  # 3

3. 依存ライブラリを仮想環境にインストール

標準のインストーラ pip

$ python -m venv .venv --upgrade-deps  # 1
$ source .venv/bin/activate  # 2
(.venv) $ python -m pip install openai  # 3

(ツール提案の流れの末に)2024年 uv 到来

  • Rustで書かれた、Pythonプロジェクト管理ツール(集大成的)

  • uvだけ入れればよい(Pythonを自動で入れる)

  • 開発者が 人力で仮想環境管理からの解放 (パラダイムシフト!)

uvのインストール

$ curl -LsSf https://astral.sh/uv/install.sh | sh
$ brew install uv
$ # cargo などなど

https://docs.astral.sh/uv/getting-started/installation/

展示1️⃣ 手札は、全PyPI!

  • インストールすることで コマンドラインツールとしても使えるライブラリ がある

% uvx openai api chat.completions.create -g user 'Python環境構築ツールパビリオンを訪れた感想は?' -m gpt-5
Installed 16 packages in 29ms
実地で訪れたわけではないので体験談は語れませんが、「Python 環境構築ツール」をテーマにしたパビリオンだと想定すると、こんな点が印象に残りそうです。

これまで:人力で仮想環境を用意してそこにインストールしてきた

$ python -m venv openai-env --upgrade-deps
$ source openai-env/bin/activate
(openai-env) $ python -m pip install openai
(openai-env) $ openai api chat.completions.create -g user 'Python環境構築ツールパビリオンを訪れた感想は?' -m gpt-5

🆕 uvx

  • uvをインストールしたら使えます(uv tool run のエイリアス)

  • uvが 一時的な仮想環境を作り、そこにインストールしてコマンドラインツールを実行

  • PyPIにある全てのコマンドラインツール(最大60万)が、仮想環境の人力管理無しで使い放題ってこと!

展示2️⃣ inline script metadata

ライブラリを使ったスクリプト
from openai import OpenAI
client = OpenAI()
response = client.responses.create(model="gpt-5", input=args.input)
print(response.output_text)
% uv run script.py 'Python環境構築ツールパビリオンを訪れた感想は?'
Installed 16 packages in 35ms
実際に会場へ行くことはできませんが、最近の動向を踏まえて「Python環境構築ツールが一堂に会したらこう感じる」という要約です。

これまで:依存ライブラリをインストールした仮想環境を人力で用意

$ python -m venv script-env --upgrade-deps
$ source script-env/bin/activate
(script-env) $ python -m pip install openai  # ここの伝達が人頼み
(script-env) $ python script.py

🆕 PEP 723 – Inline script metadata

  • Pythonスクリプトにコメントとして 依存ライブラリを示すメタデータ を書けるようになった

  • uv add openai --script script.py

# /// script
# requires-python = ">=3.11"
# dependencies = [
#     "openai",
# ]
# ///

uv run <metadata書いたscript>.py

  1. uvがmetadataを読む

  2. uvが metadataを満たす仮想環境を用意

  3. uvが2の仮想環境でスクリプトを実行

metadataを書いたスクリプトは、別環境でもはるかに動かしやすくなったってこと!

展示3️⃣ uvで楽々Pythonプロジェクト管理

uvで管理されたPythonプロジェクトであれば uv sync だけ!

$ git clone https://github.com/ftnext/llm-deep-research.git
$ cd llm-deep-research
$ uv sync

これまで:人力で仮想環境にインストールして環境構築

$ git clone https://github.com/ftnext/llm-deep-research.git
$ cd llm-deep-research
$ python -m venv .venv --upgrade-deps
$ source .venv/bin/activate
(.venv) $ python -m pip install -e .

🆕 たった1つの uv sync だけ

  • uvが仮想環境 .venv を作る

  • そこに uv.lock の通りに依存ライブラリをインストール

あとは uv run <command> 連打

  • uv run で 仮想環境 .venv を有効にしたうえでコマンド実行

  • 人力で有効化(source .venv/bin/activate)は不要

$ uv run which python
/.../llm-deep-research/.venv/bin/python

uvでPythonプロジェクトを始める

新規プロジェクトにおいては

まとめ🌯:2025年のPython環境はここまで簡単になりました!

  • 手札は、全PyPI! uvx

  • inline script metadata uv run <metadata書いたscript>.py

  • Pythonプロジェクトでは uv sync して uv run <command>

お前、誰だったのよ?

../_images/uzabase-white-logo.png

uvで Python環境 自由✌️(ぶい)

ご清聴ありがとうございました

📣「"仮想環境"を人間が管理する時代は、もう終わりました。ツールに任せて楽してこーぜ!」

Appendix

  • 参考文献

  • 本LT(5分)のスコープ外とした事項への補足

補足:uvに至る流れ

uvx(拙ブログ記事)

inline script metadata

既存のPythonプロジェクトにuvを入れる

  • uvx migrate-to-uv

  • pyproject.toml がなく動かない場合は、uv venv して uv pip install のようなworkaround

uvは速い(拙ブログ記事)

EOF