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 などなど
展示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
uvがmetadataを読む
uvが metadataを満たす仮想環境を用意
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>
お前、誰だったのよ?
nikkie(にっきー)・ 1000日 ブログ を書きました!(更新中)
機械学習エンジニア・LLM・自然言語処理(We're hiring!)

uvで Python環境 自由✌️(ぶい)
ご清聴ありがとうございました
📣「"仮想環境"を人間が管理する時代は、もう終わりました。ツールに任せて楽してこーぜ!」
Appendix
参考文献
本LT(5分)のスコープ外とした事項への補足
補足:uvに至る流れ
TechRAMEN 2024で発表 one obvious wayを志向するPythonに依存ライブラリ管理ツールがたっくさんある話
『ハイパーモダンPython』Ⅰ部・Ⅱ部
例えば
uvx
にはpipx run
が先行します
uvx(拙ブログ記事)
inline script metadata
PyCon JP 2024で発表:PEP 723(Inline script metadata)が拓く世界。Pythonスクリプトに必要な仮想環境をツールにおまかせできるんです!
所属先のブログにも書きました:Pythonスクリプトのモジュラリティとポータビリティを高めていく
補足:さらに進んだ例 marimo edit --sandbox (拙ブログ)
既存のPythonプロジェクトにuvを入れる
uvx migrate-to-uv
pyproject.toml
がなく動かない場合は、uv venv して uv pip install のようなworkaround
uvは速い(拙ブログ記事)
uvはRust実装(バイナリ提供)なので、Python処理系で動かすpipより速い