virtualenvの1つを修正しようとしています-インストールされているすべてのライブラリを本番環境に一致するライブラリにリセットしたいと思います。
pipでこれを行うための迅速で簡単な方法はありますか?
virtualenvの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が上書きされます。存在しない場合は、新しいものが作成されます。また、古いrequirements.txtを置き換えたくない場合は、別のファイル名を付けてください。次のすべてのコマンドで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
しかし、virtualenvを削除して再作成してみませんか?
不変性のルール。その上、他のソリューションが使用するすべての配管とグレッピングを覚えておくのは難しいです。
この回答は、スレッドで最も洗練されたソリューションの1つであるため、コメントセクションから引き上げたいと思いました。この回答の完全なクレジットは@joebに送られます。
pip uninstall -y -r <(pip freeze)
これは、上記の回答の多くが処理できないvirtualenvのコンテキスト外でユーザーパッケージフォルダーをクリアするユースケースに最適でした。
編集:このコマンドをMakefileで機能させる方法を知っている人はいますか?
便宜上、これをbashプロファイルに追加します。
alias pipuninstallall="pip uninstall -y -r <(pip freeze)"
次に、以下を実行します。
pipuninstallall
たまたまpipenvを使用している場合は、次のコマンドを実行できます。
pipenv uninstall --all
pip list
elseを使用する、またはpip freeze
含める必要--local
がある他の回答も、共通の名前空間にあるパッケージをアンインストールします。
これが私が定期的に使用するスニペットです
pip freeze --local | xargs pip uninstall -y
参照:pip freeze --help
私はそれを次のようにして管理しました:
reqs.txt
現在インストールされているパッケージリストで呼び出される要件ファイルを作成しますpip freeze > reqs.txt
reqs.txt
# -y means remove the package without prompting for confirmation
pip uninstall -y -r reqs.txt
間違えた場合にフォールバックするpip要件ファイルが常にあるので、この方法が好きです。また、再現性があり、クロスプラットフォーム(Windows、Linux、MacO)です。
pip freeze
)pip freeze | xargs pip uninstall -y
pip list
)pip list | awk '{print $1}' | xargs pip uninstall -y
virtualenv
)virtualenv --clear MYENV
仮想環境からすべてのパッケージを削除するための最良の方法
pip freeze > unins ; pip uninstall -y -r unins ; del unins
sudo pip3 freeze > unins ; pip3 uninstall -y -r unins ; rm unins
動作しない場合は、上記のコマンドでに変更;
してください。&&
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
ファイルは完了時に最終的に削除されます。
--userオプションを使用して、ユーザーサイトにインストールされているすべてのパッケージをアンインストールします。
pip3 freeze --user | xargs pip3 uninstall -y
最も簡単な方法は、virtualenvを完全に作り直すことです。そうでない場合は、本番環境と一致するrequirements.txtファイルがあると想定しています。
# On production:
pip freeze > reqs.txt
# On your machine:
rm $VIRTUALENV_DIRECTORY
mkdir $VIRTUALENV_DIRECTORY
pip install -r reqs.txt
まず、すべてのパッケージをに追加しますrequirements.txt
pip freeze > requirements.txt
次に、すべてを削除します
pip uninstall -y -r requirements.txt
Windowsユーザーの場合、これはWindowsPowerShellで使用するものです。
pip uninstall -y (pip freeze)
それは私が知っている古い質問ですが、私はそれに遭遇したので、将来の参照のためにあなたは今これを行うことができます:
pip uninstall [options] <package> ...
pip uninstall [options] -r <requirements file> ...
-r、-要件ファイル
指定された要件ファイルにリストされているすべてのパッケージをアンインストールします。このオプションは複数回使用できます。
pipドキュメントバージョン8.1から
(@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拡張機能です。
pip3 freeze --local | xargs pip3 uninstall -y
空のを取得するには、このコマンドを数回実行する必要がある場合がありますpip3 freeze --local
。
これは、すべての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))
クロスプラットフォームでpipenvでも機能する簡単で堅牢な方法は次のとおりです。
pip freeze
pip uninstall -r requirement
pipenvによる:
pipenv run pip freeze
pipenv run pip uninstall -r requirement
ただし、piplockまたはpipfileは更新されないため、注意してください
これは私の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を削除します。
のみを使用したクロスプラットフォームのサポート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
Windowsでは、パスが正しく構成されている場合、次を使用できます。
pip freeze > unins && pip uninstall -y -r unins && del unins
実行している場合virtualenv
:
virtualenv --clear </path/to/your/virtualenv>
たとえば、virtualenvが/Users/you/.virtualenvs/projectx
の場合、次を実行します。
virtualenv --clear /Users/you/.virtualenvs/projectx
仮想環境がどこにあるかわからない場合はwhich python
、アクティブ化された仮想環境内から実行してパスを取得できます
Windowsのコマンドシェルでは、コマンドは機能し
pip freeze | xargs pip uninstall -y
ません。したがって、Windowsを使用している方のために、別の方法を考え出しました。
pip freeze
コマンドから.txtファイルにコピーします。pip uninstall -r *textfile.txt*
を使用している場合は、 wipeenvコマンドpew
を使用できます。
pew wipeenv [env]
プロジェクトによってインストールされたパッケージを削除したかっただけで、インストールした他のパッケージは削除したくありませんでした(のようなものneovim
で、mypy
ローカルpudb
開発に使用していますが、アプリの要件には含まれていません)。だから私はしました:
cat requirements.txt| sed 's/=.*//g' | xargs pip uninstall -y
それは私にとってうまくいきました。
このフォルダから削除するライブラリを選択します。
C:\ Users \ User \ AppData \ Local \ Programs \ Python \ Python310 \ Lib \ site-packages
私の場合、pip
macOSにインストールされたHomebrewを使用して、誤って多数のパッケージをグローバルにインストールしていました。デフォルトのパッケージに戻す最も簡単な方法は簡単です。
$ brew reinstall python
または、使用している場合pip3
:
$ brew reinstall python3
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パッケージを削除し、おそらくシステムが壊れたままになるため、非常に誤解を招くものであることがわかりました。