911

virtualenvの1つを修正しようとしています-インストールされているすべてのライブラリを本番環境に一致するライブラリにリセットしたいと思います。

pipでこれを行うための迅速で簡単な方法はありますか?

4

30 に答える 30

1310

代替ソリューションとしてこのスニペットを見つけました。これは、virtualenvを作り直すよりも、ライブラリをより適切に削除することです。

pip freeze | xargs pip uninstall -y

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

pip freeze | grep -v "^-e" | xargs pip uninstall -y
于 2012-06-28T18:32:29.103 に答える
620

これは、すべてのMac、Windows、およびLinuxシステムで機能します。Requirements.txtファイル内のすべてのpipパッケージのリストを取得するには(注:これにより、requirements.txtが上書きされます。存在しない場合は、新しいものが作成されます。また、古いrequirements.txtを置き換えたくない場合は、別のファイル名を付けてください。次のすべてのコマンドでrequirements.txtを配置します)。

pip freeze > requirements.txt

今度は1つずつ削除します

pip uninstall -r requirements.txt

一度に削除したい場合は

pip uninstall -r requirements.txt -y

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

そして、ファイルを作成せずに単一のコマンドを実行する場合(@joebが提案したように)。

pip uninstall -y -r <(pip freeze)
于 2016-11-12T18:08:05.140 に答える
148

これは最新のもので動作します。私はそれがそれを行うための最短かつ最も宣言的な方法だと思います。

virtualenv --clear MYENV

しかし、virtualenvを削除して再作成してみませんか?

不変性のルール。その上、他のソリューションが使用するすべての配管とグレッピングを覚えておくのは難しいです。

于 2012-07-26T15:15:15.953 に答える
133

この回答は、スレッドで最も洗練されたソリューションの1つであるため、コメントセクションから引き上げたいと思いました。この回答の完全なクレジットは@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
于 2018-03-09T18:51:49.933 に答える
64

pip listelseを使用する、またはpip freeze 含める必要--localがある他の回答も、共通の名前空間にあるパッケージをアンインストールします。

これが私が定期的に使用するスニペットです

 pip freeze --local | xargs pip uninstall -y

参照:pip freeze --help

于 2017-08-03T04:49:25.607 に答える
49

私はそれを次のようにして管理しました:

  1. reqs.txt現在インストールされているパッケージリストで呼び出される要件ファイルを作成します
pip freeze > reqs.txt
  1. 次に、からすべてのパッケージをアンインストールしますreqs.txt
# -y means remove the package without prompting for confirmation
pip uninstall -y -r reqs.txt

間違えた場合にフォールバックするpip要件ファイルが常にあるので、この方法が好きです。また、再現性があり、クロスプラットフォーム(Windows、Linux、MacO)です。

于 2019-10-29T11:32:57.407 に答える
44

方法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
于 2016-06-05T13:25:34.503 に答える
43

仮想環境からすべてのパッケージを削除するための最良の方法

ウィンドウズ:

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

Linux:

sudo pip3 freeze > unins ; pip3 uninstall -y -r unins ; rm unins

動作しない場合は、上記のコマンドでに変更;してください。&&

于 2021-05-04T06:30:40.667 に答える
32

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

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

于 2015-12-06T14:01:59.847 に答える
24

--userオプションを使用して、ユーザーサイトにインストールされているすべてのパッケージをアンインストールします。

pip3 freeze --user | xargs pip3 uninstall -y
于 2020-04-01T07:56:51.140 に答える
19

最も簡単な方法は、virtualenvを完全に作り直すことです。そうでない場合は、本番環境と一致するrequirements.txtファイルがあると想定しています。

# On production:
pip freeze > reqs.txt

# On your machine:
rm $VIRTUALENV_DIRECTORY
mkdir $VIRTUALENV_DIRECTORY
pip install -r reqs.txt
于 2012-06-28T15:37:50.017 に答える
18

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

pip freeze > requirements.txt

次に、すべてを削除します

pip uninstall -y -r requirements.txt 
于 2019-01-08T10:03:21.587 に答える
16

Windowsユーザーの場合、これはWindowsPowerShellで使用するものです。

 pip uninstall -y (pip freeze)
于 2018-03-23T12:57:37.810 に答える
15

virtualenvwrapper関数の使用:

wipeenv

wipeenvのドキュメントを参照してください

于 2016-09-10T04:50:48.643 に答える
12

それは私が知っている古い質問ですが、私はそれに遭遇したので、将来の参照のためにあなたは今これを行うことができます:

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

-r、-要件ファイル

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

pipドキュメントバージョン8.1から

于 2016-03-23T14:33:09.040 に答える
6

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

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

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

からman xargs

-r、-no-run-if-empty

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

于 2019-07-05T11:24:03.423 に答える
6
pip3 freeze --local | xargs pip3 uninstall -y

空のを取得するには、このコマンドを数回実行する必要がある場合がありますpip3 freeze --local

于 2019-10-17T18:26:16.080 に答える
2

これは、すべての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))
于 2017-06-18T20:06:42.230 に答える
2

クロスプラットフォームでpipenvでも機能する簡単で堅牢な方法は次のとおりです。

pip freeze 
pip uninstall -r requirement

pipenvによる:

pipenv run pip freeze 
pipenv run pip uninstall -r requirement

ただし、piplockまたはpipfileは更新されないため、注意してください

于 2019-10-11T18:10:11.737 に答える
2

これは私のWindowsシステムで動作します

pip freeze > packages.txt && pip uninstall -y -r packages.txt && del packages.txt

最初の部分pip freeze > packages.txtでは、pipを使用してインストールされたパッケージのリストとバージョン番号を含むテキストファイルを作成します

2番目の部分pip uninstall -y -r packages.txtでは、確認プロンプトを表示せずに、インストールされているすべてのパッケージを削除します。

3番目の部分del packages.txtでは、作成したばかりのpackages.txtを削除します。

于 2021-06-23T11:15:11.480 に答える
1

のみを使用したクロスプラットフォームのサポート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.
于 2015-02-21T03:45:48.953 に答える
1

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

pip list | awk '{print $1}' | xargs pip uninstall -y
于 2016-06-02T22:12:19.227 に答える
1

Windowsでは、パスが正しく構成されている場合、次を使用できます。

pip freeze > unins && pip uninstall -y -r unins && del unins
于 2021-04-19T18:53:35.860 に答える
0

実行している場合virtualenv

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

たとえば、virtualenvが/Users/you/.virtualenvs/projectxの場合、次を実行します。

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

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

于 2016-10-27T21:57:56.507 に答える
0

Windowsのコマンドシェルでは、コマンドは機能しpip freeze | xargs pip uninstall -yません。したがって、Windowsを使用している方のために、別の方法を考え出しました。

  1. インストールされているpipのパッケージのすべての名前をpip freezeコマンドから.txtファイルにコピーします。
  2. 次に、.txtファイルの場所に移動し、コマンドを実行しますpip uninstall -r *textfile.txt*
于 2017-12-26T06:39:02.433 に答える
0

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

pew wipeenv [env]

于 2019-01-11T10:57:28.873 に答える
0

プロジェクトによってインストールされたパッケージを削除したかっただけで、インストールした他のパッケージは削除したくありませんでした(のようなものneovimで、mypyローカルpudb 開発に使用していますが、アプリの要件には含まれていません)。だから私はしました:

cat requirements.txt| sed 's/=.*//g' | xargs pip uninstall -y

それは私にとってうまくいきました。

于 2021-01-20T23:39:58.787 に答える
0

このフォルダから削除するライブラリを選択します。

C:\ Users \ User \ AppData \ Local \ Programs \ Python \ Python310 \ Lib \ site-packages

于 2021-12-11T09:05:03.380 に答える
-1

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

$ brew reinstall python

または、使用している場合pip3

$ brew reinstall python3
于 2017-05-18T21:28:54.763 に答える
-2

Pipには、Pipによってインストールされたパッケージと、システムのパッケージマネージャーによってインストールされたパッケージを知る方法がありません。このためには、このようなことをする必要があります

rpmベースのディストリビューションの場合(python2.7をpipをインストールしたPythonバージョンに置き換えます):

find /usr/lib/python2.7/ |while read f; do
  if ! rpm -qf "$f" &> /dev/null; then
    echo "$f"
  fi
done |xargs rm -fr

debベースのディストリビューションの場合:

find /usr/lib/python2.7/ |while read f; do
  if ! dpkg-query -S "$f" &> /dev/null; then
    echo "$f"
  fi
done |xargs rm -fr

次に、残っている空のディレクトリをクリーンアップします。

find /usr/lib/python2.7 -type d -empty |xargs rm -fr

一番の答えは、ディストリビューションからすべての(ほとんど?)pythonパッケージを削除し、おそらくシステムが壊れたままになるため、非常に誤解を招くものであることがわかりました。

于 2017-10-04T12:47:51.833 に答える