J'ai beaucoup joué avec mes installations Python (2 et 3) et installé un paquet de paquets, certains utilisant apt-get
, mais la plupart utilisant pip
. J'ai également mis à niveau de nombreux packages apt
- installés avec pip
vers une version plus récente.
Ma question est:
Comment annuler toutes ces modifications, supprimer tous les packages pip
- installed Python et simplement conserver le jeu par défaut de packages préinstallés dans leur version de référentiel par défaut, ainsi que ceux installés par apt-get
mais uniquement en tant que dépendance d’autres logiciels, toujours en passant à la version du référentiel si nécessaire.
Je souhaite effectuer cette opération afin de disposer d'un environnement Python propre au système et de modifier mes modifications dans virtualenvs uniquement.
Est-ce possible sans réinstallation du système? Comment pourrais-je l'aborder?
Je commencerais par énumérer les packages Python gérés par apt-get
(l'exécution de la ligne suivante prend quelques secondes, 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é, vous pouvez obtenir la liste de tous les paquets 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 paquets vous avez installés avec 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, facilitant la recherche des packages que vous avez installés. Par exemple, j'ai installé l'outil gcloud
de Google, qui installe un ensemble de packages pip que je ne souhaite pas désinstaller, mais en parcourant la liste, il est aisé de constater qu'ils ont tous été installés au même moment précis. devrait partir, et ceux que je peux désinstaller. Avant de désinstaller un package pip, vous devez créer un instantané de la liste des packages installés:
$ Sudo pip freeze > $HOME/pip_freeze_snapshot.txt
Ensuite, désinstallez simplement 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 ça vous va, 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 paquets, vous pouvez simplement supprimer ce répertoire. Sinon, il suffit de désinstaller les packages individuels, par exemple:
$ pip uninstall tensorflow
N'oubliez pas de rechercher d'autres versions de python (par exemple, 3.5).