web-dev-qa-db-ja.com

Pipによってインストールされたすべてのパッケージを削除する最も簡単な方法は何ですか?

私は自分の長所の1つを修正しようとしています - インストールされているすべてのライブラリを本番に合ったライブラリに戻したいのですが。

Pipを使ってこれを素早く簡単に行う方法はありますか?

453
blueberryfields

私はこのスニペットを別の解決策として見つけました。それはvirtualenvを作り直すよりライブラリの優雅な削除です:

pip freeze | xargs pip uninstall -y

VCS経由でパッケージをインストールしている場合は、それらの行を除外して手動でパッケージを削除する必要があります(以下のコメントから昇格)。

pip freeze | grep -v "^-e" | xargs pip uninstall -y
708
blueberryfields

これは、すべてのMac、Windows、およびLinuxシステムで機能します。 requirements.txtファイル内のすべてのpipパッケージのリストを取得するには(注:これがある場合はrequirements.txtを上書きします。それ以外の場合は新しいものを作成します)。

pip freeze > requirements.txt

今1つずつ削除する

pip uninstall -r requirements.txt

一度にすべてを削除したい場合は

pip uninstall -r requirements.txt -y

requirements.txtファイルを含む既存のプロジェクトで作業していて環境が異なる場合は、上記の例のrequirements.txttoberemoved.txtに置き換えてください。その後、上記の手順を実行したら、requirements.txtを使用して現在のクリーンな環境を更新できます。

また、ファイルを作成せずに単一のコマンドを実行することもできます(joebが推奨)。

pip uninstall -y -r <(pip freeze)
210

私はこれが最新のとうまくいくと思います

virtualenv --clear MYENV
90
Robert Moskal

それはスレッドの中で最も洗練された解決策の一つなので、私はコメントセクションからこの答えを上げたいと思いました。この回答の全額は @joeb にあります。

pip uninstall -y -r <(pip freeze)

これは、上記の回答の多くが処理できないvirtualenvのコンテキスト外で自分のユーザーパッケージフォルダをクリアするというユースケースでは、私にとって非常に役に立ちました。

編集:誰かがこのコマンドをMakefileで動かす方法を知っていますか?

ボーナス:bashのエイリアス

便宜上これを私のbashプロファイルに追加します。

alias pipuninstallall="pip uninstall -y -r <(pip freeze)"

次に実行します。

pipuninstallall

Pipenvの代替手段

偶然 pipenv を使っているなら、あなたはただ実行することができます:

pipenv uninstall --all
59
Taylor Edmiston

方法1(pip freezeを使用)

pip freeze | xargs pip uninstall -y

方法2(pip listを使用)

pip list | awk '{print $1}' | xargs pip uninstall -y

方法3(virtualenvを使用)

virtualenv --clear MYENV
38
Suriyaa

pip listまたはpip freeze を使用するその他の回答には、--localを含める必要があります。それ以外の場合は、共通の名前空間にあるパッケージもアンインストールされます。

だからここに私が定期的に使用するスニペットがあります

 pip freeze --local | xargs pip uninstall -y

または

 pip list --local | py -x "print(x.split()[0])" | xargs pip uninstall -y

pip freeze --helpを発行してこの動作の詳細を学んでください。

27
nehemiah

最も早い方法はvirtualenvを完全に作り直すことです。そうでない場合、本番環境に合ったRequirements.txtファイルがあると思います。

# On production:
pip freeze > reqs.txt

# On your machine:
rm $VIRTUALENV_DIRECTORY
mkdir $VIRTUALENV_DIRECTORY
pip install -r reqs.txt
18
Ned Batchelder

Windowsでは、pathが正しく設定されていれば、次のものを使用できます。

pip freeze > unins && pip uninstall -y -r unins && del unins

Unixライクなシステムでも同様のことが言えます。

pip freeze > unins && pip uninstall -y -r unins && rm unins

「ファイルが見つかりません」などの問題に遭遇する可能性があるので、これは完全に堅実ではないという単なる警告ですが、それでもなおうまくいく可能性があります

編集:明確にするため:uninsは、このコマンドの実行時にデータが書き込まれる任意のファイルです。pip freeze > unins

それが順番に書いたそのファイルはそれからpip uninstall -y -r uninsを通して暗黙の同意/事前の承認で前述のパッケージをアンインストールするために使用されます。

ファイルは完了時に最終的に削除されます。

virtualenvwrapper functionを使用します。

wipeenv

wipeenvのドキュメントを参照

13
zesk

Windowsユーザーにとって、これは私が Windows PowerShell で使用しているものです。

 pip uninstall -y (pip freeze)
7
benwrk

私は知っていますが、今後の参考のためにこれを行うことができますので、私はそれを越えてつまずいたその古い質問。

pip uninstall [options] <package> ...
pip uninstall [options] -r <requirements file> ...

-r、 - 必須ファイル

所定の要件ファイルにリストされているすべてのパッケージをアンインストールします。このオプションは複数回使用できます。

pipのドキュメントから version 8.1

5
Craicerjack

これが私にとってすべてのpythonパッケージをアンインストールする最も簡単な方法でした。

from pip import get_installed_distributions
from os import system
for i in get_installed_distributions():
    system("pip3 uninstall {} -y -q".format(i.key))
3
Anonymous 138

まず、すべてのパッケージをrequirements.txtに追加します

pip freeze > requirements.txt

それからすべてを取除いて下さい

pip uninstall -y -r requirements.txt 
3
shafik

(これを答えとして追加します。@ blueberryfieldsの答えにコメントするのに十分な評判がないためです)

@blueberryfieldsの答えはうまくいきますが、アンインストールするパッケージがない場合は失敗します(この「すべてをアンインストールする」がスクリプトまたはメイクファイルの一部である場合は問題になる可能性があります)。 GNU版のxargsを使用する場合、これはxargs -rで解決できます。

pip freeze --exclude-editable | xargs -r pip uninstall -y

man xargsから:

-r、-no-run-if-empty

標準入力に空白以外が含まれていない場合は、コマンドを実行しないでください。通常、入力がない場合でもコマンドは1回実行されます。このオプションは、GNU拡張です。

2

pipのみを使用したクロスプラットフォームサポート

#!/usr/bin/env python

from sys import stderr
from pip.commands.uninstall import UninstallCommand
from pip import get_installed_distributions

pip_uninstall = UninstallCommand()
options, args = pip_uninstall.parse_args([
    package.project_name
    for package in
    get_installed_distributions()
    if not package.location.endswith('dist-packages')
])

options.yes = True  # Don't confirm before uninstall
# set `options.require_venv` to True for virtualenv restriction

try:
    print pip_uninstall.run(options, args)
except OSError as e:
    if e.errno != 13:
        raise e
    print >> stderr, "You lack permissions to uninstall this package.
                      Perhaps run with sudo? Exiting."
    exit(13)
# Plenty of other exceptions can be thrown, e.g.: `InstallationError`
# handle them if you want to.
2
Samuel Marks

これは私のために働くコマンドです:

pip list | awk '{print $1}' | xargs pip uninstall -y
2
Fei Xie

pewを使用している場合は、 wipeenv コマンドを使用できます。

pew wipeenv [env]

1

Windowsの Command Shell では、コマンドpip freeze | xargs pip uninstall -yは機能しません。それで、あなたがWindowsを使っている人たちのために、私はそうする代わりの方法を考え出しました。

  1. インストール済みパッケージの pip の名前をすべてpip freezeコマンドから .txt ファイルにコピーします。
  2. 次に、 .txt ファイルの場所に移動して、コマンドpip uninstall -r *textfile.txt*を実行します。
1

virtualenvを実行している場合

virtualenv --clear </path/to/your/virtualenv>

たとえば、あなたのvirtualenvが/Users/you/.virtualenvs/projectxであれば、あなたは実行するでしょう:

virtualenv --clear /Users/you/.virtualenvs/projectx

仮想環境がどこにあるのかわからない場合は、アクティブ化された仮想環境内からwhich pythonを実行してパスを取得できます。

1
punkrockpolly

私の場合、私は誤ってmacOSにHomebrewがインストールされたpipを使ってグローバルに多数のパッケージをインストールしました。デフォルトのパッケージに戻す最も簡単な方法は簡単です。

$ brew reinstall python

あるいは、pip3を使用していたならば、

$ brew reinstall python3
1