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


73

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

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

pip freezeはvirtualenvの外でタイプしたので、これに気づきました。そこにあるべきではないPythonパッケージをいくつか見つけました。だから今私の質問は:

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

回答:


56

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


12
私は残忍になり発行しましたsudo rm -r /usr/local/lib/python2.7。ここまでは順調ですね。
Apteryx

@Apteryx、私も同じことを/usr/local/lib/python3.5しましたが、しばらくすると、update-notifier-commonPython 3 sixパッケージが見つからないため、パッケージのアップグレードが失敗しました。でインストールsixしてしまいましたsudo -H pip3 install six
アレクセイ

2
@Apteryx神はいまいましい!私は同じことをしました、そして今、私のシステム全体はすべてめちゃくちゃです!ubuntuのほとんどすべてがpythonに依存しているためです!
ユカシマフクサイ17

壊れた実行可能ファイルがたくさんあることに気づきました/usr/local/bin/(しばらく前に削除/usr/local/lib/python3.5してcondaに切り替えました)。
アレクセイ

22

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

pip freeze > dump.txt

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

cat dump.txt | xargs sudo pip uninstall -y

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


1
これは私には受け入れ答えなければなりません
ナム・G VU

3
誰もヴィムレスワンライナーが必要な場合:sudo pip uninstall -y $(pip freeze | sed 's;==.*;;g' | tr '\n' ' ')
ブノワダッフェス

4
気をつけて!これは、OSがの特別なバージョンを出荷しているかどうかによって異なりますpip。archlinuxでは、pipシステムパッケージを喜んでアンインストールします。一方、pipDebianの上ジェシーは文句を言うと、エラー:Not uninstalling virtualenv at /usr/lib/python3/dist-packages, owned by OS
トーマス・G.

1
sudoが必要ですか?-これは間違いなく受け入れられる答えである必要があります
ジョナサン

6

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


5

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

pip uninstall < package-name >

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

pip search <package you want to search for>

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

sudo apt-get install python3

どのPythonパッケージがpipによってインストールされ、どのPythonパッケージがapt-getによってインストールされたのかをどのように判断しますか?そもそもpip uninstall使用sudo pip installしたとしても、まだできますか?
david.libremone

@ d3vid pip freezeは、インストールされているパッケージのみを表示します(AFAICS)。
オリ

1
@oli pip freezeは、少なくとも正確には、aptによってインストールされたパッケージもリストします。ここでの他の答えも説明しています。
nealmcb

0

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

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

-2

これはHomebrewと関係があります。Homebrewをインストールしていくつかのことをするまで、Mac Airでpyodbcに問題はなかった。私はこのスレッドをgithubで見つけましたが、それは私のために働いたソリューションで終わります。

「Homebrewを使用している場合は、ODBCヘッダーをインストールするだけです。

$ brew install unixodbc

「pip install pyodbc」を再度実行します。

この100%で問題は解決し、ほんの少ししかかかりませんでした。試してみます。


多分あなたはこれをAsk Differentに投稿する必要がありますか?apple.stackexchange.com
david.libremone
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.