Python3.4のensurepip(それとpyvenvの更新)

ensurepipとpyvenv

Python3.4b1 が 2013/11/24 にリリースされました。

今回はあまり文法的なアップデートはなく、いくつかの重要なモジュールが追加されています。 とりあえずパッケージ方面で重要なensurepipがb1リリースにぎりぎり間に合ったので、試してみました。

ensurepipモジュールは PEP 453 -- Explicit bootstrapping of pip in Python installations で提案されています。

現在のPythonパッケージングは、 setuptoolspip の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 !

blogroll

social