スクリプトのお勉強

Pythonパッケージ管理の歴史

投稿日:

歴史っても、あまり過去に興味がないので、、

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): 実行環境を複数作成するツール
ツール名時期分類内容
distutils2000 –LA/LI今でも内部では存在する。distutilsを直接使うことはない
distribute2008 – 2013LA2008年にsetuptoolsから分離したが、2013年にsetuptoolsに統合
setup.py(+ egg)? –LAいまでも基本はsetup.pyでアーカイブして、pipでインストールすること。eggはファイル形式
easy_install(ez_setup.py)– 2016LAsetuptoolsを使うためのコマンドとしてよく使われていた。今は不要
virtualenv2007 –VR昔は、単体で仮想環境を作るツールとして、virtualenv_wrapperと共に使われていた。今は Python 3.3からvenvのサブセットとして venvに統合
pyenv2012 –VR仮想環境より広く、Pythonバージョン管理ツール。これにプラスして、pipenvやpoetryを使う。
pyvenv?VRvenvの前身。私が思ったより人気ない。。
venv2012 –VRPython 3.3 から入ってる、Python標準の仮想環境管理ツール。正確にはモジュール。
wheel2012 –LAパッケージファイル形式。PEP 42で規定されている、Python wheel packaging standardのリファレンス実装
pip(+ setuptools)2006 –LI定番のライブラリインストールツール
pipenv2018 –LI/VR仮想環境作成の定番ツールの一つ
poetry2018 –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標準についての歴史

-スクリプトのお勉強

執筆者:

関連記事

go 1.16 でviperを使って設定ファイルを読みだすプログラムを作ってみた

他にたくさんあるけど こんな感じの内容はたくさんあると思いますが、、goの初心者がなんとなくgoの手習いとして、まずは設定ファイルを読みだすことをしてみようと思いました。 go動作環境 windows …

Python3 – VCR.py でネットワーク系テストを簡単に作成する

1. 始めに python3で実装すると、モックテストをしたくなります。モックを使って、比較的簡単にテストできるからです。 問題はネットワーク系テスト モックテストで問題になるのは、外部に依存するテス …

顔画像のモザイク方法(python + OpenCV + face_recognition)

Python3での顔画像モザイク方法 python3での顔画像モザイクの方法を調べてみました。 仕事とは関係なく、単なる趣味だったりしますが。。 この内容で、Djangoと統合する予定です。 Open …

Djangoアプリサンプル – 画像ファイルアップロード + 顔モザイク(画像アップロード編)

仕事で使用している、Djangoについて、サンプルを作成してみようと思います。ここでは、画像ファイルのアップロードと顔モザイクを行うwebアプリを作成してみようと思います。 この記事ではファイルアップ …

Djangoアプリサンプル – 画像ファイルアップロード + 顔モザイク(統合編)

顔モザイク Djangoアプリ 前々回 前回 を統合して、Djangoアプリを作成してみようと思います。 前提インストール 前回、ubuntu 18を前提に記述しましたが、CentOS7(CentOS …