J'ai récemment mis à jour de 15h10 à 16h04 et maintenant mon python3
semble être foiré.
Avant la mise à niveau, j'avais python3.4
et python3.5.1
(manuellement) installé. La mise à niveau a supprimé python3.4
et l'a remplacée par python3.2
et python3.1
.
Le nouveau python3.5.1
a supprimé mon python3.5.1
installation.
Mais maintenant, je suis confronté à beaucoup de problèmes:
comand-not-found
ne fonctionne plus et plante avec cette trace (1)
si j'essaie de lancer commmand-not-found
avec python3.2
(2)
J'ai enlevé un peu plus de choses, car c'est toujours la même chose.
Je ne veux pas utiliser les anciennes versions python3
, comment puis-je résoudre ce problème?
Et pourquoi y at-il python3.1
?
(1)
me@my-machine:~$ whareis systemd
Traceback (most recent call last):
File "/usr/lib/command-not-found", line 27, in <module>
from CommandNotFound.util import crash_guard
ImportError: No module named 'CommandNotFound'
(2)
Traceback (most recent call last):
File "/usr/lib/python3.2/dbm/gnu.py", line 6, in <module>
from _gdbm import *
ImportError: No module named _gdbm
Solution: Contrairement à ce que j'ai mentionné auparavant, mon installation de python3.5.1
n'a pas été supprimée par la mise à jour. C'était toujours sous /usr/local/bin/python3.5
.
Traçage de l'erreur: J'ai écrit quelques lignes de débogage dans /usr/lib/python3.5/_sysconfigdata.py
:
print("python-version", sys.version_info)
print("python-gcc-version",sys.version)
print("python-executable",sys.executable)
La sortie était différente entre l'appel de /usr/bin/python3
et de rhythmbox
, mais l'exécutable python était dans les deux sens /usr/bin/python3
Puis j'ai cherché la mauvaise installation en utilisant whereis python3
et enlevé /usr/local/bin/python3.5
Ensuite, j'ai purgé et réinstallé python3
et j'ai exécuté apt install -f
.
Cette erreur a donc disparu.
Souvenez-vous: n'installez jamais de choses à partir des sources, si elles se trouvent parfois dans le dépôt ou du moins, supprimez-les avant que votre gestionnaire de paquets ne les installe.
Vu la même erreur dans Ubuntu 16.04
avec deux installations de Python3 (3.5.2
et 3.7.3
):
$ junk
Traceback (most recent call last):
File "/usr/lib/command-not-found", line 27, in <module>
from CommandNotFound.util import crash_guard
ModuleNotFoundError: No module named 'CommandNotFound'
Je n'avais pas besoin de python 3.5.2
. Donc, le supprimer en procédant comme suit a résolu l'erreur pour moi:
Sudo apt-get remove --purge python3*
Sudo apt autoremove
Ensuite, je vois command not found
comme prévu:
$ junk
junk: command not found