pip freeze
を実行すると、(他の予想されるパッケージの中で)pkg-resources==0.0.0
が表示されます。このパッケージに言及している投稿をいくつか見ました( this one を含む)が、それが何であるか、またはpip freeze
の出力に含まれている理由を説明していません。私が不思議に思っている主な理由は、好奇心からではありませんが、requirements.txt
行を含むpip freeze
で生成されたpkg-resources==0.0.0
ファイルを使用してパッケージをインストールしようとすると、場合によっては物事を壊すようです(たとえば Travis CIpip
を介して依存関係のインストールを試み、この行を見つけます)。
pkg-resources
とは何ですか?また、requirements.txt
からこの行を削除しても大丈夫ですか?
virtualenv
にいるとき、この行はpip freeze
の出力にのみ存在するようです。それが何であるか、または何をするのかはまだわかりませんが、virtualenv
に関連している可能性があることをさらに調査します。
https://github.com/pypa/pip/issues/4022 によると、これは、Ubuntuがpipに誤ったメタデータを提供したことによるバグです。したがって、この動作の正当な理由はないようです。 Ubuntuでフォローアップバグを提出しました。 https://bugs.launchpad.net/ubuntu/+source/python-pip/+bug/163546
前の回答をバックアップするには、requirements.txtからその行を削除しても安全です。パッケージリストを安全にフリーズするMakeファイルスタンザの例を次に示します(Makefileをドロップして、make freeze
で実行します)。
freeze:
pip freeze | grep -v "pkg-resources" > requirements.txt
質問の部分については、「この行を削除しても大丈夫ですか?」:
私はここでもubuntu 16.04で開発している同じ問題を抱えています。 "pip install -r requirements.txt"
を実行しているdebian 8.5にデプロイすると、pipはpkg-resourcesが「見つかりません」と文句を言いますが、グローバルパッケージが「python-pkg-resources」にインストールされているので、依存関係は満たされます。 ubuntuでも同じ:パッケージもそこに存在します。
here のように、「暗黙的にインストールされたパッケージ」のようです。
だから:python-pkg-resourcesがインストールされているDebian/Ubuntuを使用している場合、その行を削除しても安全です。私はそうしました、そして、すべてはうまく走っています。ただし、私はこれに関する専門家ではないので、別のマシンに展開するときに問題が発生する可能性があることに注意してください。
Ubuntuでは、Ubuntu virtualenv
パッケージを削除し、pip
から新しいバージョンをインストールすることでこれを修正できます。
Sudo apt remove virtualenv
Sudo pip install -U virtualenv