Restaurer l'installation de Python aux dépendances par défaut du package apt plus


14

J'ai beaucoup joué avec mes installations Python (2 et 3) et installé un tas de paquets, certains utilisant apt-get, mais la plupart utilisant pip. J'ai également mis à niveau de nombreux aptpackages installés pipvers une version plus récente.

Ma question est:
comment puis-je annuler toutes ces modifications, supprimer tous les pippackages Python installés et conserver simplement l'ensemble par défaut des packages préinstallés dans leur version de référentiel par défaut, ainsi que ceux installés par apt-getmais uniquement en tant que dépendance d'autres logiciels, toujours en rétrogradant vers le référentiel version si nécessaire.

Je veux faire cela pour avoir un environnement Python rangé pour le système et avoir mes modifications dans virtualenvs uniquement.

Est-ce possible sans réinstallation du système? Comment pourrais-je l'aborder?


Réponses:


5

Je commencerais par lister les packages Python gérés par apt-get(le one-liner suivant prend quelques secondes à s'exécuter, soyez patient):

$ 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

Remarque: si nécessaire, remplacez 2.7 par la version de python qui vous intéresse.

Ensuite, désinstallez les packages que vous avez installés manuellement. Si vous ne savez pas lesquels vous avez installés, vous pouvez obtenir la liste de tous les packages installés manuellement à l'aide de la commande suivante (voir cette question ):

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

Désinstallez ensuite les packages Python que vous avez installés manuellement, par exemple:

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

Ensuite, vous voulez savoir quels packages vous avez installés à l'aide de pip:

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

Cette commande répertorie le contenu du répertoire d'installation de pip trié par date de dernière modification, ce qui facilite la recherche des packages que vous avez installés vous-même. Par exemple, j'ai installé l' gcloudoutil de Google qui installe un tas de packages pip que je ne veux pas désinstaller, mais en parcourant la liste, il est facile de voir qu'ils ont tous été installés en même temps, donc je sais lesquels laisser, et ceux que je peux désinstaller. Avant de désinstaller un package pip, vous devez prendre un instantané de la liste des packages installés:

$ sudo pip freeze > $HOME/pip_freeze_snapshot.txt

Désinstallez ensuite les packages souhaités, par exemple:

$ sudo pip uninstall py pytest

Enfin, n'oubliez pas que certains packages pip peuvent avoir été installés dans votre répertoire utilisateur. Peut-être que cela vous convient, mais sinon, vous pouvez les énumérer:

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

Si vous voulez vous débarrasser de tous ces packages, vous pouvez simplement supprimer ce répertoire. Sinon, désinstallez simplement les packages individuels, par exemple:

$ pip uninstall tensorflow

N'oubliez pas de vérifier les autres versions de python (par exemple, 3.5).


Je recommanderais une annonce de sécurité publique selon laquelle la suppression d'un trop grand nombre de packages peut paralyser votre système, mais sinon, c'est un excellent guide. (Par exemple, j'étais content de l'avoir fait mvplutôt que rmsur mon /usr/local/lib/python3.6car j'ai découvert quelques minutes plus tard que j'avais besoin de certaines choses là-dedans pour des fonctions système assez basiques.
craq
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.