開発・管理ツールの変遷¶
Pythonでの開発を行う上で、下記に示すいくつものツールが存在します。
| ツール名 | 概要 | 役割 |
|---|---|---|
| virtualenv | 仮想環境管理 | |
| venv | 仮想環境管理 | |
| Pipenv | パッケージ管理、プロジェクト管理 | |
| Poetry | パッケージ管理、プロジェクト管理 | |
| Rye | パッケージ管理、プロジェクト管理 | |
| uv | パッケージ管理、プロジェクト管理 | |
| pyenv | Pythonバージョン管理 |
| ツール名 | 概要 | 役割 |
|---|---|---|
| Black | フォーマッタ | |
| yapf | フォーマッタ | |
| autopep8 | フォーマッタ | |
| Ruff | フォーマッタ | |
| pylint | リンタ | |
| Flake8 | リンタ | |
| isort | インポート順の自動ソート |
Pythonで開発を行う際には、このツールの中からどの選択肢を取るかを考える必要がありました。 少しずつデファクトスタンダードな構成(1)が固まる流れはありましたが、なお長い期間を要すると思われました。
- 筆者の感覚では、下記の構成がデファクト化している印象がありました。
- パッケージ管理、プロジェクト管理: Poetry
- Pythonバージョン管理: pyenv
- フォーマッタ: Black
- リンタ: Flake8
- インポート順の自動ソート: isort
しかし近年「uv」と「Ruff」が登場したことで、この複雑さが解消されようとしています。 ここではこれらツールの変遷を紹介しつつ、今後のデファクトスタンダードとなるであろう構成を説明します。
その前にまずは、Pythonで開発をする上で避けては通れない仮想環境(Viertual Environment)について説明します。
標準ツールでの開発環境¶
- venvを自分で作る
- pipでパッケージインストール
- requirements.txtでパッケージ管理