私は自分の長所の1つを修正しようとしています - インストールされているすべてのライブラリを本番に合ったライブラリに戻したいのですが。
Pipを使ってこれを素早く簡単に行う方法はありますか?
私はこのスニペットを別の解決策として見つけました。それはvirtualenvを作り直すよりライブラリの優雅な削除です:
pip freeze | xargs pip uninstall -y
VCS経由でパッケージをインストールしている場合は、それらの行を除外して手動でパッケージを削除する必要があります(以下のコメントから昇格)。
pip freeze | grep -v "^-e" | xargs pip uninstall -y
これは、すべての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.txt
をtoberemoved.txt
に置き換えてください。その後、上記の手順を実行したら、requirements.txt
を使用して現在のクリーンな環境を更新できます。
また、ファイルを作成せずに単一のコマンドを実行することもできます(joebが推奨)。
pip uninstall -y -r <(pip freeze)
私はこれが最新のとうまくいくと思います
virtualenv --clear MYENV
それはスレッドの中で最も洗練された解決策の一つなので、私はコメントセクションからこの答えを上げたいと思いました。この回答の全額は @joeb にあります。
pip uninstall -y -r <(pip freeze)
これは、上記の回答の多くが処理できないvirtualenvのコンテキスト外で自分のユーザーパッケージフォルダをクリアするというユースケースでは、私にとって非常に役に立ちました。
編集:誰かがこのコマンドをMakefileで動かす方法を知っていますか?
便宜上これを私のbashプロファイルに追加します。
alias pipuninstallall="pip uninstall -y -r <(pip freeze)"
次に実行します。
pipuninstallall
偶然 pipenv を使っているなら、あなたはただ実行することができます:
pipenv uninstall --all
pip freeze
を使用)pip freeze | xargs pip uninstall -y
pip list
を使用)pip list | awk '{print $1}' | xargs pip uninstall -y
virtualenv
を使用)virtualenv --clear MYENV
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
を発行してこの動作の詳細を学んでください。
最も早い方法はvirtualenvを完全に作り直すことです。そうでない場合、本番環境に合ったRequirements.txtファイルがあると思います。
# On production:
pip freeze > reqs.txt
# On your machine:
rm $VIRTUALENV_DIRECTORY
mkdir $VIRTUALENV_DIRECTORY
pip install -r reqs.txt
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
を通して暗黙の同意/事前の承認で前述のパッケージをアンインストールするために使用されます。
ファイルは完了時に最終的に削除されます。
Windowsユーザーにとって、これは私が Windows PowerShell で使用しているものです。
pip uninstall -y (pip freeze)
私は知っていますが、今後の参考のためにこれを行うことができますので、私はそれを越えてつまずいたその古い質問。
pip uninstall [options] <package> ...
pip uninstall [options] -r <requirements file> ...
-r、 - 必須ファイル
所定の要件ファイルにリストされているすべてのパッケージをアンインストールします。このオプションは複数回使用できます。
pipのドキュメントから version 8.1
これが私にとってすべての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))
まず、すべてのパッケージをrequirements.txt
に追加します
pip freeze > requirements.txt
それからすべてを取除いて下さい
pip uninstall -y -r requirements.txt
(これを答えとして追加します。@ blueberryfieldsの答えにコメントするのに十分な評判がないためです)
@blueberryfieldsの答えはうまくいきますが、アンインストールするパッケージがない場合は失敗します(この「すべてをアンインストールする」がスクリプトまたはメイクファイルの一部である場合は問題になる可能性があります)。 GNU版のxargs
を使用する場合、これはxargs -r
で解決できます。
pip freeze --exclude-editable | xargs -r pip uninstall -y
man xargs
から:
-r、-no-run-if-empty
標準入力に空白以外が含まれていない場合は、コマンドを実行しないでください。通常、入力がない場合でもコマンドは1回実行されます。このオプションは、GNU拡張です。
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.
これは私のために働くコマンドです:
pip list | awk '{print $1}' | xargs pip uninstall -y
pew
を使用している場合は、 wipeenv コマンドを使用できます。
pew wipeenv [env]
Windowsの Command Shell では、コマンド
pip freeze | xargs pip uninstall -y
は機能しません。それで、あなたがWindowsを使っている人たちのために、私はそうする代わりの方法を考え出しました。
pip freeze
コマンドから .txt ファイルにコピーします。pip uninstall -r *textfile.txt*
を実行します。virtualenv
を実行している場合
virtualenv --clear </path/to/your/virtualenv>
たとえば、あなたのvirtualenvが/Users/you/.virtualenvs/projectx
であれば、あなたは実行するでしょう:
virtualenv --clear /Users/you/.virtualenvs/projectx
仮想環境がどこにあるのかわからない場合は、アクティブ化された仮想環境内からwhich python
を実行してパスを取得できます。
私の場合、私は誤ってmacOSにHomebrewがインストールされたpip
を使ってグローバルに多数のパッケージをインストールしました。デフォルトのパッケージに戻す最も簡単な方法は簡単です。
$ brew reinstall python
あるいは、pip3
を使用していたならば、
$ brew reinstall python3