virtualenvで環境を作った際にデフォルトでインストールされるpipやらのライブラリはどこからくるのか

2017.05.04

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

このへんからきます。

<PYTHON_PATH>/lib/pythonX.X/site-packages/virtualenv_support/XXXXX.whl

経緯

virtualenvを使って新しい環境を作る際、pip, setuptools, wheelなどの最小限のパッケージはデフォルトでインストールされます。

$ virtualenv hoge
New python executable in /Users/hirata.kei/hoge/bin/python2.7
Also creating executable in /Users/hirata.kei/hoge/bin/python
Installing setuptools, pip, wheel...done.

$ cd hoge
$ source bin/activate
$ which pip
/Users/hirata.kei/hoge/bin/pip

このpip、普段は特に気になりませんが、時間が経ちバージョンが古くなってくると、環境を作ってpipコマンドを叩くたびにupgradeしろと言われて煩わしくなります。

$ pip list
pip (7.1.2)
...
You are using pip version 7.1.2, however version 9.0.1 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.

インストール元のバージョンをあげれば問題なさそうですが、このpipがどこから来るのか不明だったため、環境を作るたびに都度pip install --upgrade pipを叩いて問題を先送りにしていました。

調査

上記の状況に嫌気が指してきたので、頑張って調査してみることにしました。

詳細は省きますが、このあたりを眺めるとpipなどのライブラリがどこからインストールされているかを知ることができます。

最終的に、virtualenvをはじめにインストールした際に作成される、virtualenv_support/ディレクトリ内のwheelがマスターであることがわかります。このwheelは、virtualenvのパッケージ内で管理されているものです。

というわけで、virtualenvをアップグレードし、問題は解消されました。

まとめ

こういう細かいけど気になる疑問を解消するの楽しい。