web-dev-qa-db-ja.com

pip経由でインストールされたPythonパッケージを検出して削除するにはどうすればよいですか?

apt-getの代わりにpipを使用して、誤ってPythonパッケージをシステムにインストールしました。これは2つの方法で行いました。

  • 古いバージョンのvirtualenvを使用して、virtualenvを作成するときに--no-site-packagesを追加するのを忘れました-その後pip installを呼び出したときに、virtualenvではなくシステムにインストールされたPythonパッケージ
  • 正しくセットアップされたvirtualenvで、Sudo pip install somepackageと入力しました-virtualenvではなくシステムにインストールされたSudo

Virtualenvの外でpip freezeと入力し、そこにあるべきではないPythonパッケージのリストを見つけたため、偶然これに気付きました。だから今私の質問は:

  • システムに誤ってインストールされたすべてのPythonパッケージ(つまり、pip freezeリストに表示されているが、apt-getでインストールされていないPythonパッケージ)を特定するにはどうすればよいですか?
  • どうすればそれらを削除できますか?
71
david.libremone

Ubuntu Oneiric(および新しいバージョンも期待)は、/usr/local/lib/python2.7/dist-packagesにpipパッケージをインストールし、/usr/lib/python2.7/dist-packagesaptパッケージをインストールします。したがって、前のディレクトリとSudo pip uninstallを見つけて、そこにあるすべてのパッケージを確認してください。

56
Capi Etheriel

Pipは現在、OSが所有するものをアンインストールしようとするアンインストールコマンドを無視します。パッケージが見つからない場合のように、エラーは発生しません。したがって、次のプロセスでアンインストールできます。

pip freeze > dump.txt

ダンプファイルを編集して、-e「編集可能なインストール」行、==記号(vimの%s;==.*;;g)の後のすべてを削除し、新しい行をスペースに置き換えます(%s;\n; ;g vim)。次に、すべての未所有パッケージをアンインストールできます

cat dump.txt | xargs Sudo pip uninstall -y

いくつかのパッケージも~/.local/libにインストールされていたため、この手順を2回実行する必要がありました。

19
Henry Schreiner

AFAIK Sudo pip install/usr/local/lib/pythonVERSION/dist-packagesにインストールされます。システム全体のパッケージをアンインストールするには、Sudo pip uninstallを実行する必要があります。 pip freezeはパッケージメタデータを検索し、インストールされているものをすべてリストするようです。仮想環境内にのみ適用可能なパッケージをリストする-lオプションが仮想環境内にありますが、仮想環境内でも同様にデフォルトのケースのようです。 /usr/local/lib/pythonVERSION/dist-packagesの関連パッケージも削除できると思いますが、あまり便利な方法ではないと思います。

6
sagarchalise

Pip経由でインストールされたパッケージを削除するには、単に Ctrl+Alt+T キーボードでターミナルを開きます。開いたら、以下のコマンドを実行します。

pip uninstall < package-name >

パッケージを検索するには

pip search <package you want to search for>

どのPythonパッケージがpipによってインストールされたかを判断するには、freezeコマンドを使用します。これにより、インストールされたパッケージとそのバージョンのリストが表示されます。すべてのインスタンスを削除し、Sudo apt-getコマンドを使用して再インストールすることをお勧めします

Sudo apt-get install python3
5
Mitch

Pythonパッケージからディスク領域を安全にクリーンアップする必要がありました。これはパッケージの完全な削除ですが、Pythonバージョンも移動する必要があったため、古いパッケージは必要ありませんでした。以下を使用してすべてのパッケージ名を取得し、最初の2行をスキップして最初の列を取得し、ユーザーの操作なしでアンインストールしました。

pip list | awk 'NR>2 {print $1}' | xargs -I {} pip uninstall -y {}
0
m1st0