Aujourd'hui, j'ai mis à niveau la bibliothèque Python matplotlib
avec la commande suivante:
Sudo pip3 install --upgrade matplotlib
Tout semblait normal pendant le processus d'installation. Mais depuis lors, je rencontre deux problèmes. La première est que pip
ne fonctionne plus. Chaque commande pip
évoque le même message d'erreur:
Traceback (most recent call last):
File "/usr/local/bin/pip3", line 7, in <module>
from pip import main
File "/usr/local/lib/python3.5/dist-packages/pip/__init__.py", line 26, in <module>
from pip.utils import get_installed_distributions, get_prog
File "/usr/local/lib/python3.5/dist-packages/pip/utils/__init__.py", line 27, in <module>
from pip._vendor import pkg_resources
File "/usr/local/lib/python3.5/dist-packages/pip/_vendor/pkg_resources/__init__.py", line 3018, in <module>
@_call_aside
File "/usr/local/lib/python3.5/dist-packages/pip/_vendor/pkg_resources/__init__.py", line 3004, in _call_aside
f(*args, **kwargs)
File "/usr/local/lib/python3.5/dist-packages/pip/_vendor/pkg_resources/__init__.py", line 3046, in _initialize_master_working_set
dist.activate(replace=False)
File "/usr/local/lib/python3.5/dist-packages/pip/_vendor/pkg_resources/__init__.py", line 2578, in activate
declare_namespace(pkg)
File "/usr/local/lib/python3.5/dist-packages/pip/_vendor/pkg_resources/__init__.py", line 2152, in declare_namespace
_handle_ns(packageName, path_item)
File "/usr/local/lib/python3.5/dist-packages/pip/_vendor/pkg_resources/__init__.py", line 2092, in _handle_ns
_rebuild_mod_path(path, packageName, module)
File "/usr/local/lib/python3.5/dist-packages/pip/_vendor/pkg_resources/__init__.py", line 2121, in _rebuild_mod_path
orig_path.sort(key=position_in_sys_path)
AttributeError: '_NamespacePath' object has no attribute 'sort
De plus, Software Updater d'Ubuntu a cessé de fonctionner. Il semble similaire à ce problème , seule la solution ne fonctionnera pas, car, bien, pip
ne fonctionne pas. Mais je suppose que le problème de Software Updater disparaîtra lorsque le problème pip
sera résolu.
J'ai essayé jusqu'à présent les commandes suivantes de threads avec des problèmes similaires, mais en vain
Sudo apt-get update
Sudo apt-get upgrade
Sudo apt-get -f install
Sudo apt-get install --reinstall aptdaemon
Sudo rm -rvf /var/lib/apt/lists/*
Sudo apt install --reinstall python3-pip
Et évidemment, aucune commande pip
ne fonctionnera, par exemple.
Sudo pip3 install --upgrade pip setuptools wheel
pip3 install --upgrade pip
pip3 install --upgrade setuptools
J'ai trouvé, à quoi ressemblait ne réponse qui a résolu mon problème , mais c'est plutôt une méthode de sledgehammer qui n'aide pas à long terme. Supprimer un répertoire entier n’est probablement pas le moyen le plus élégant:
Sudo rm -rf /usr/local/lib/python3.5/dist-packages
Ensuite, pip n’a pas été installé, je l’ai donc réinstallé avec
Sudo apt-get update
Sudo apt-get install python3-pip
pip
était de retour et fonctionnait et le problème avec Software Updater était également résolu comme prévu. Cette "solution" fonctionne, bien qu'elle supprime de nombreuses bibliothèques telles que matplotlib
, qui doivent être réinstallées par la suite. Mais lorsque j'ai réinstallé matplotlib
2.1.2, la même erreur pip
a été provoquée. Je ne peux vraiment pas recommander cette approche.
tl; dr: Ne fais pas ça.
Revenons donc à la case départ. Ce qui a résolu le problème était de réinstaller pip
et toutes les bibliothèques suivantes avec Sudo -H
, par exemple.
Sudo -H apt install --reinstall python3-pip
Sans l'indicateur -H
, une installation de matplotlib
évoquait le même problème pip
. Mais j'ai quand même eu le message d'erreur. La solution semble être cette modification originaire ici :
J'ai édité la ligne # 2121 ~ 2122 de ce fichier:
/usr/local/lib/python3.5/dist-packages/pip/_vendor/pkg_resources/__ init__.py
#orig_path.sort(key=position_in_sys_path)
#module.__path__[:] = [_normalize_cached(p) for p in orig_path]
orig_path_t = list(orig_path)
orig_path_t.sort(key=position_in_sys_path)
module.__path__[:] = [_normalize_cached(p) for p in orig_path_t]
Ce pip/pip3 relancé et j'ai pu installer des modules. Jusqu'à présent, tout fonctionne. Espérons que ce sera le dernier.
Edit: Une semaine plus tard, le problème n’a pas refait surface, c’est pourquoi je le marque comme une réponse acceptée.
Edit 2: Une mise à jour pip
a réactivé le problème. Apparemment, la mise à jour avait écrasé la modification. Ce n'était pas un problème de le réintroduire à nouveau et de se débarrasser du comportement aberrant.