スクリプトのお勉強

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標準についての歴史

-スクリプトのお勉強

執筆者:

関連記事

SPAMチェック for OCN の開発

前回、Thunderbirdプラグインの概要を書いたので、今回は開発したプラグインについて書きます。 SPAMチェック for OCNとは 以下の機能を持ったThunderbirdのアドオン(プラグイ …

CentOS7 + Django2.2 + uwsgi + nginx 連携方法

Djangoとnginx連携方法 以前はApache経由で連携しましたが、今回はnginxと連携する方法を記述します。 環境 設定した環境は以下です。 OS: CentOS7Python3.6.8 ( …

Python Falconによる REST APIの作成

1.はじめに 最近、仕事では、あまり技術的なことをしてませんで。。今回は、pythonのFalconというWebアプリケーションフレームワークを使用し、REST APIを作成します。 前回は、Djan …

Python3 – django-webtest

忙しいので断片だけ。。 DjangoでWebブラウザからアクセスする感じでテストする、やり方の一つです。以前にやったように、 Seleniumからやってもいいのすが、そこまでじゃない場合の単体テスト方 …

Markdown to HTML(grip)

1.はじめに 最近の文書はほとんどMarkdownで書くのですが、それをHTMLに変換する方法を調べました。 ただし、私がMarkdownと思っている文法は「github-flavored-markd …

google オプトアウト Click here to opt-out.