2011-10-27 41 views
62

pipを使用してパッケージをインストールすると、必要なパッケージもすべてインストールされます(依存関係)。そのパッケージをアンインストールすると依存パッケージも削除されますか?"pip"を含むパッケージをアンインストールすると依存パッケージも削除されますか?

+1

なぜあなたはそれを試してみることができないのですか?私はあなたの質問に答えるためにそれを正確に行うだろうが、何らかの理由でピップが今ここでパッケージインデックスを得ることができない。 –

+2

@ThomasVanderStichele今後のGoogle社員のためにオンラインで回答が得られないため) – Mark

+0

[pip newsgroup](https://groups.google.com/d/topic/python-virtualenv/JqIbyUDy2-E/)にあります議論)、ピップの人々は、少なくとも今のところ、この機能を望んでいません。なんて残念なこと、惜しいこと! –

答えて

42

いいえ、それは依存関係のパッケージをアンインストールしません:

$ pip install specloud 
$ pip freeze 

figleaf == 0.6.1
鼻== 1.1.2
ピノキオ== 0.3
specloud == 0.4 0.5

$ pip uninstall specloud 
$ pip freeze 

figleaf == 0.6.1
鼻== 1.1.2
ピノキオ== 0.3

あなたはすべてのパッケージがspecloudパッケージ自体がなく、まだ見ることができるように。

88

pip-autoremoveユーティリティをインストールして使用すると、パッケージと未使用の依存関係を削除できます。

# install pip-autoremove 
pip install pip-autoremove 
# remove "somepackage" plus its dependencies: 
pip-autoremove somepackage -y 
+14

最終更新は1年前です。今日それを試して、惨めに破った。 –

+5

それは私のために働いたようです。 – se210

+5

私のために働いた。 – timkofu

4

私は正常にこのbashのラインを使用して、パッケージの依存関係を削除しました:

for dep in $(pip show somepackage | grep Requires | sed 's/Requires: //g; s/,//g') ; do pip uninstall -y $dep ; done 

これはピップ1.5.4

+18

技術的には、この解決策は他の回答で述べたようにすべての依存関係を正常に削除しますが、システムパッケージからインストールされたものを含め**ターゲット**に一意ではない**依存関係もアンインストールします。たとえば、私のシステムでは、ターゲットパッケージにpipと共通の依存関係があったため、このスクリプトは最終的に失敗したため、スクリプトが終了して失敗する前にpipが依存関係をアンインストールしました。 – sinisterstuf

+0

も ​​'8.1.2'に取り組んでいます。 – vyscond

+6

これは、次のレベルの依存関係を削除するだけで**、**これらの依存関係の依存関係は削除しないことに注意してください。 – tamakisquare

3

に、あまりにも良い測定のために働きました。依存関係がインストールした他のパッケージと交差するシナリオを考えてみましょう。新しいインストールごとにrequirements.txtを凍結し、requirements.txtの以前のバージョンを比較して、依存関係を手動で削除する方がよいでしょう。

0

https://github.com/cls1991/pefの試しがあるかもしれません。 すべての依存関係を持つパッケージを削除します。

+0

pefは仮想環境でしか動作しないようですが、残念なことに – Bas

+0

安全上の理由から、コードをハックするだけで保護コードをオフにすることができます。 – cls1991

関連する問題