Pythonインストールをデフォルトに戻し、aptパッケージの依存関係


14

Pythonのインストール(2および3)でいろいろと遊んで、いくつかのパッケージをインストールapt-getしましたpip。また、多くのaptインストール済みパッケージをpip新しいバージョンにアップグレードしました。

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

これを実行して、システムのPython環境を整理し、virtualenvのみで変更します。

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


回答:


5

私が管理するPythonパッケージをリストすることから始めますapt-get(次の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バージョンに置き換えます。

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

$ 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のインストールディレクトリの内容を最終変更日でソートしてリストし、自分でインストールしたパッケージを見つけやすくします。たとえば、gcloudアンインストールしたくないpipパッケージをインストールするGoogleのツールをインストールしましたが、リストを見ると、それらがすべて正確に同時にインストールされていることが簡単にわかります。残すもの、アンインストールできるもの。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など)を確認することを忘れないでください。


あまりにも多くのパッケージを削除するとシステムが動作しなくなる可能性があるという公安宣言をお勧めしますが、それ以外の場合は優れたガイドです。(例えば、私は私がした喜んでいたmvのではなくrm、私の/usr/local/lib/python3.6。私は、私はかなり基本的なシステム機能のためにそこにいくつかのことを必要とすることを、数分後に発見されたので
craq
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.