Rubyにはgem、Node.jsにはnpmがあるが、元々Pythonにはパッケージマネージャは無かった。
それがいつの頃からか、easy_installなるものが現れ、さらにpipが作られた。今ではpipがほぼデファクトとなりつつあるけど、後付でインストールするパッケージの一つという位置づけは変わらない。箱を開けたら直ぐに使えるという意味で "Batteries included" を標榜しているPythonとしてはちょっと寂しい。
その状況をなんとかしようということでPEP-453 Explicit bootstrapping of pip in Python installationsが提案されている。「pipをPython 2.7, 3.3 及び3.4の公式推奨デフォルトインストーラとしよう」という提案で、3.4から実際に標準搭載されるらしい。Pythonをインストールするとpipコマンドが同時にインストールされるのかと思いきやちょっと違うっぽいのでここにメモ。
まず、3.4で追加されるのが "ensurepip"というモジュール。でこれが何をするかというと、まぁ名前のとおりなのだが「pipが入っている事を確実にする」(変な日本語だな...)。
具体的には
$ python3.4 -m ensurepip
とすると
- pipがインストールされていない場合はpipをインストール
- 既にインストールされている場合はなにもしない
という挙動らしい。そして既にインストールされていてもpython3.4に付いてくるものの方が新しくてそれに置き換えたい場合は
$ python3.4 -m ensurepip --upgrade
とする。ちなみにこのpipのインストールの時にネットワークアクセスはない。つまり、Pythonの標準パッケージにpipを同梱して配る。でもデフォルトではインストールせずに上記のコマンドを叩くと必要に応じてインストールすると。なんという奥ゆかしさwww
せっかくなので試してみようと思って最新の3.4.0a4で確認してみたが、"No module named ensurepip"とのこと orz..
PEP-429 Python 3.4 Release Scheduleによるとbeta1が11/24。そこにはきっと入るだろうが、そこまではお預けってことかな。