web-dev-qa-db-ja.com

--no-site-packagesで作成された新しいvirtualenvでpipfreezeが一部のパッケージを報告するのはなぜですか?

新しいvirtualenvを作成すると、pip freezeは、環境に何もインストールしていないのに、いくつかのパッケージがインストールされていることを示しています。私は、最初のpip freezeが環境に入るまで、pip installが空の出力を返すことを期待していました。 wsgirefは標準ライブラリの一部です そうではないのに、なぜそれがまったく表示されないのですか?

 day @ garage:〜$ mkdirテスト
 day @ garage:〜$ cdテスト
 day @ garage:〜/ tests $ virtualenv--no-site-packages。
新しいpython実行可能ファイル./bin/python
配布のインストール...................... .................................... 
.......。 ................................................。 .................... 
.......................。 ................完了。[。 $ pipfreeze 
 distribute == 0.6.10 
 wsgiref == 0.1.2 

いくつかの追加情報:

(testing)day @ garage:〜/ tests $ pip --version 
 pip 0.7.2 from /home/day/testing/lib/python2.7/site-packages/pip-0.7 .2-py2.7.eg 
 g(python 2.7)
(testing)day @ garage:〜/ tests $ deactivate 
 day @ garage:〜/ tests $ virtualenv- -バージョン
 1.4.9 
 day @ garage:〜/ tests $ which virtualenv 
/usr/bin/virtualenv 
 day @ garage:〜/ tests $ dpkg -S /usr/bin/virtualenv
python-virtualenv:/usr/bin/virtualenv
day@garage:~/testing$ cat/etc/lsb-release 
 DISTRIB_ID = Ubuntu 
 DISTRIB_RELEASE = 11.04 
 DISTRIB_CODENAME = natty 
 DISTRIB_DESCRIPTION = "Ubuntu 11.04" 
52
Day

--no-site-packagesを使用してvirtualenvを作成するたびに、setuptoolsまたはdistributeがインストールされます。そして、wsgirefが表示される理由は、python 2.5+標準ライブラリがEgg情報をwsgiref libに提供するためです(そしてpipはそれがstdlibまたはサードパーティパッケージ)。

Python3.3 +で解決されているようです: http://bugs.python.org/issue12218

44
Hugo Tavares

少し異なる質問に答えるには:wsgiref(および他の同様に問題のある.Eggファイル(何らかの理由で何かを持っているのに不幸な場合)pip freeze -l の代わりに pip freeze

pip help freezeはこのオプションについて説明しています:

-l、-local virtualenvの場合、グローバルにインストールされたパッケージを報告しません

29
Glyph