web-dev-qa-db-ja.com

Pythonインストールをデフォルトおよびaptパッケージの依存関係に復元します

私はPythonインストール(2と3)でいろいろと遊んで、いくつかのパッケージをインストールしました。いくつかはapt-getを使用しますが、ほとんどはpipを使用します。また、aptを含む多くのpip- installedパッケージを新しいバージョンにアップグレードしました。

私の質問は:
これらのすべての変更を元に戻し、すべてのpip- installed Pythonパッケージを削除し、デフォルトのリポジトリバージョンにプレインストールされたパッケージのデフォルトセットと、apt-getただし、他のソフトウェアの依存関係としてのみ、必要に応じて常にリポジトリバージョンにダウングレードします。

システムのPython環境を整頓し、virtualenvsのみで変更を行うためにこれを行いたいです。

システムを再インストールしなくても可能ですか?どのようにアプローチしますか?

13
Byte Commander

apt-getによって管理されるPythonパッケージをリストすることから始めます(次の1行の実行には数秒かかります。しばらくお待ちください)。

$ for pyfile in `ls /usr/lib/python2.7/dist-packages`; do dpkg -S "/usr/lib/python2.7/dist-packages/${pyfile}" | sed 's/:.*//g'; done | sort -u

注:必要に応じて、2.7を目的のpythonバージョンに置き換えます。

次に、手動でインストールしたパッケージをアンインストールします。どのパッケージをインストールしたかわからない場合は、次のコマンドを使用して手動でインストールされたすべてのパッケージのリストを取得できます( this question を参照)。

$ comm -23 <(apt-mark showmanual | sort -u) <(gzip -dc /var/log/installer/initial-status.gz | sed -n 's/^Package: //p' | sort -u)

次に、手動でインストールしたPythonパッケージをアンインストールします。次に例を示します。

$ Sudo apt-get remove python-tk python-scipy

次に、pipを使用してインストールしたパッケージを確認します。

$ ls -ltd /usr/local/lib/python2.7/dist-packages/*

このコマンドは、pipのインストールディレクトリの内容を最終変更日でソートしてリストし、自分でインストールしたパッケージを見つけやすくします。たとえば、アンインストールしたくない多くのpipパッケージをインストールするGoogleのgcloudツールをインストールしましたが、リストを見ると、すべてが正確に同時にインストールされていることが簡単にわかります。残す必要があるものと、アンインストールできるものがわかります。 pipパッケージをアンインストールする前に、インストールされているパッケージのリストのスナップショットを作成する必要があります。

$ Sudo pip freeze > $HOME/pip_freeze_snapshot.txt

次に、必要なパッケージをアンインストールします。次に例を示します。

$ Sudo pip uninstall py pytest

最後に、いくつかのpipパッケージがユーザーディレクトリにインストールされている可能性があることを忘れないでください。おそらくあなたはそれで大丈夫ですが、そうでなければ、あなたはそれらをリストすることができます:

$ ls -ltd $HOME/.local/lib/python2.7/site-packages/*

これらすべてのパッケージを削除する場合は、このディレクトリを削除するだけです。それ以外の場合は、たとえば、個々のパッケージをアンインストールするだけです:

$ pip uninstall tensorflow

他のpythonバージョン(3.5など)を確認することを忘れないでください。

5
MiniQuark