歴史っても、あまり過去に興味がないので、、
Pythonのパッケージ管理の歴史は、常に流動的で、そもそもからして、
とてもじゃないがまとめて説明できるようなものではないです。
はっきり言って昔からよく分かりません。Python2系の時は全くのカオスでした。今ではまだまし、というところです。
パッケージ管理 = “ライブラリ管理” + “仮想環境管理”
そもそもパッケージ管理という概念も、昔からすれば変遷してます。
昔はパッケージ管理といっても”ライブラリアーカイブ”しかなく、ライブラリのインストールや、仮想環境管理は全くの別物でした。
でも当然ながら地続きの話です。
いつの時点で何を使っていたか
なので、いつの時点で何を使っていたか、を時系列で書いてみようと思います。
候補は以下です。以下は一回は使ったことがあります。昔のことなので、記憶が間違ってる可能性はあります。
- distutils
- distribute
- setup.py ( + egg)
- easy_install(ez_setup.py)
- virtualenv
- pyenv
- pyvenv
- venv
- wheel
- pip(+ setuptools)
- pipenv
- poetry
2021年時点でのパッケージ管理ツール一覧
2021年時点でのパッケージ管理ツール一覧を書いてみます。
時期とはそのツールが生きていた?時期です。過去ではかなりあいまいです。
分類とは、とりあえず感で、以下に分けてみました。以下は完全に分類するものではなく、何を主に行うかという観点で分けてあります。
- ライブラリアーカイブ(LA): ライブラリをまとめて一つのファイルにするツール
- ライブラリインストール(LI): 実行環境にライブラリを追加するツール
- 仮想環境管理(VR): 実行環境を複数作成するツール
ツール名 | 時期 | 分類 | 内容 |
---|---|---|---|
distutils | 2000 – | LA/LI | 今でも内部では存在する。distutilsを直接使うことはない |
distribute | 2008 – 2013 | LA | 2008年にsetuptoolsから分離したが、2013年にsetuptoolsに統合 |
setup.py(+ egg) | ? – | LA | いまでも基本はsetup.pyでアーカイブして、pipでインストールすること。eggはファイル形式 |
easy_install(ez_setup.py) | – 2016 | LA | setuptoolsを使うためのコマンドとしてよく使われていた。今は不要 |
virtualenv | 2007 – | VR | 昔は、単体で仮想環境を作るツールとして、virtualenv_wrapperと共に使われていた。今は Python 3.3からvenvのサブセットとして venvに統合 |
pyenv | 2012 – | VR | 仮想環境より広く、Pythonバージョン管理ツール。これにプラスして、pipenvやpoetryを使う。 |
pyvenv | ? | VR | venvの前身。私が思ったより人気ない。。 |
venv | 2012 – | VR | Python 3.3 から入ってる、Python標準の仮想環境管理ツール。正確にはモジュール。 |
wheel | 2012 – | LA | パッケージファイル形式。PEP 42で規定されている、Python wheel packaging standardのリファレンス実装 |
pip(+ setuptools) | 2006 – | LI | 定番のライブラリインストールツール |
pipenv | 2018 – | LI/VR | 仮想環境作成の定番ツールの一つ |
poetry | 2018 – | LA/LI/VR | 仮想環境作成の定番ツールの一つ |
参考
- https://www.yunabe.jp/docs/python_package_management.html
過去のパッケージ管理について詳しく書いてあります。 - https://engineer.recruit-lifestyle.co.jp/techblog/2019-12-25-python-packaging-specs/
過去のパッケージング標準について書いてあります。 - https://www.pypa.io/en/latest/history/
PyPi標準についての歴史