Ubuntu 16.04でvirtualenv 15.0.1およびPython 3.5.2(両方ともapt
でインストール)を使用して新しいPython仮想環境を作成およびアクティブ化するとき
virtualenv .virtualenvs/wtf -p $(which python3) --no-site-packages
source .virtualenvs/wtf/bin/activate
次の出力が得られます。
Already using interpreter /usr/bin/python3
Using base prefix '/usr'
New python executable in /home/das-g/.virtualenvs/wtf/bin/python3
Also creating executable in /home/das-g/.virtualenvs/wtf/bin/python
Installing setuptools, pkg_resources, pip, wheel...done.
確かにpip freeze --all
はこれらの4つのパッケージをリストします:
pip==8.1.2
pkg-resources==0.0.0
setuptools==25.2.0
wheel==0.29.0
ただし、pip freeze
(--all
なし)がこれらの暗黙的にインストールされたパッケージを省略することを期待します。それらの一部は省略しますが、pkg-resources
は省略しません。
pkg-resources==0.0.0
(pip freeze --local
と同じです)
これはヘルプテキストと一致していますが
$> pip freeze --help | grep '\--all'
--all Do not skip these packages in the output: pip, setuptools, distribute, wheel
pkg-resources
出力にpip freeze
を含めることは、あまり有用ではなく、有害でさえあるようです。 (pip-sync
を pip-tools から実行すると、仮想環境からpkg-resourcesがアンインストールされ、それにより環境が微妙に破壊されるのではないかと思われます。)なぜpip freeze
はpkg-resources
を省略せずにリストするのですか?私が覚えている限り、Ubuntu 14.04にはリストしませんでした(Python 3.4を使用) 。
https://github.com/pypa/pip/issues/4022 によると、これはUbuntuがpipに誤ったメタデータを提供したことによるバグです。そのため、この動作の正当な理由はないようです。 Ubuntuでフォローアップバグを提出しました。 https://bugs.launchpad.net/ubuntu/+source/python-pip/+bug/163546
仮想環境でも同じ問題が発生しました。 pip uninstall pkg-resources==0.0.0
で削除しました