ensurepipとpyvenv
Python3.4b1 が 2013/11/24 にリリースされました。
今回はあまり文法的なアップデートはなく、いくつかの重要なモジュールが追加されています。 とりあえずパッケージ方面で重要なensurepipがb1リリースにぎりぎり間に合ったので、試してみました。
ensurepipモジュールは PEP 453 -- Explicit bootstrapping of pip in Python installations で提案されています。
現在のPythonパッケージングは、 setuptools と pip の2つを使うようになっています。 しかし、これらのツールはPythonの標準の配布物には含まれていませんでした。 Pythonインストール後は、 setuptools, pip, virtualenv をそろえるのが最初の作業でした。
これまでのvirtualenvを使うまで:
$ wget https://bitbucket.org/pypa/setuptools/src/1.4.1/ez_setup.py $ wget https://raw.github.com/pypa/pip/develop/contrib/get-pip.py $ ez_setup.py $ get-pip.py $ pip install virtualenv $ virtualenv myenv
virtualenvは作成した環境にpipまでインストールするようになっています。 3.3から既に採用されている pyvenv は、virtualenvと違い、特に追加インストールするようにはなっていませんでした。 そのため、pyvenvが標準ライブラリに入ったわりにはvirtualvenvよりも不便なものになっていました。
これが、今回採用された ensurepip によって、virtualenv同様に、仮想環境作成後にpipまでインストールされるようになりました。
Python3.4の場合:
$ pyvenv myenv
これだけです。
さて、ensurepipについてきちんと説明すると、pip自体が直接Pythonに同梱されているわけではありません。 これは pip のリリースサイクルと Pythonのリリースサイクルが異なるためです。 (pipをアップグレードするためにPythonをアップグレードするなんてやりたくないですよね?)
そのため、Pythonにはensurepipという、pipをインストールするモジュールが標準ライブラリに追加されました。 Pythonをインストールすると、最後にensurepipが呼び出されているため、すぐにpipが使えるようになっていますが、あくまでもインストーラーが自動実行されているだけで、pip自体は同梱されていません。
で、pipのアップグレードもこのensurepipを使って行います。
ensurepipでpipがアップグレードされるのを確認してみる
まず、現時点での pip のバージョン:
$ pip --version pip 1.5rc1 from /home/aodag/hello/env/lib/python3.4/site-packages (python 3.4)
1.5rcです。PyPIに上がってるのは1.4.1が最新なので、githubにしか置いていないアグレッシブなバージョンです。 こわいので1.4.1にします。
$ pip install -U pip==1.4.1 $ pip --version pip 1.4.1 from /home/aodag/hello/env/lib/python3.4/site-packages (python 3.4)
ensurepipにダウングレードする機能はないようなので、pipでバージョン指定します。
$ python -m ensurepip --upgrade
ensurepipします。 これで、またpipが最新の 1.5rc になるはずです、が。
$ pip --version -bash: /home/aodag/hello/env/bin/pip: No such file or directory
(´・ω・`)なんだと...!?
$ pip3 --version pip 1.5rc1 from /home/aodag/hello/env/lib/python3.4/site-packages (python 3.4)
ヽ(´_・ω・)_ pip3はあるのか....
まとめ
- もうsetuptoolsとかdistributeとかeasy_installは説明不要
- ensurepipはとにかく最新版をインストールすることしかできない?
- pip1.5のリリースが近いようなので、そこでもなにか変化があるかもしれない。
ひとまずPythonインストールしたら pip が使えるようになったのは非常によろこばしいと思います。
追記
ドキュメントにモジュールの説明があります。 Bootstrapping the pip installer <http://docs.python.org/3.4/library/ensurepip.html> Python APIがあるので、環境設定のスクリプトを作るときは、これを呼べばいいのですね。
直接使える場所にはありませんが、pip,setuptooslのwheelが同梱されているようです。 http://hg.python.org/cpython/file/73a84d8dc544/Lib/ensurepip/_bundled
Comments !