J'ai juste essayé d'installer python 3.6 sur mon système Ubuntu 16.04, et maintenant je ne peux pas exécuter le terminal depuis le programme de lancement ou depuis Ctrl + Alt + T. J'ai essayé d'exécuter gnome-terminal
à partir de XTerm et j'ai reçu le message suivant:
Traceback (most recent call last):
File "/usr/bin/gnome-terminal", line 9, in <module>
from gi.repository import GLib, Gio
File "/usr/lib/python3/dist-packages/gi/__init__.py", line 42, in <module>
from . import _gi
ImportError: cannot import name '_gi'
Error in sys.excepthook:
Traceback (most recent call last):
File "/usr/lib/python3/dist-packages/apport_python_hook.py", line 63, in apport_excepthook
from apport.fileutils import likely_packaged, get_recent_crashes
File "/usr/lib/python3/dist-packages/apport/__init__.py", line 5, in <module>
from apport.report import Report
File "/usr/lib/python3/dist-packages/apport/report.py", line 30, in <module>
import apport.fileutils
File "/usr/lib/python3/dist-packages/apport/fileutils.py", line 23, in <module>
from apport.packaging_impl import impl as packaging
File "/usr/lib/python3/dist-packages/apport/packaging_impl.py", line 23, in <module>
import apt
File "/usr/lib/python3/dist-packages/apt/__init__.py", line 23, in <module>
import apt_pkg
ModuleNotFoundError: No module named 'apt_pkg'
Original exception was:
Traceback (most recent call last):
File "/usr/bin/gnome-terminal", line 9, in <module>
from gi.repository import GLib, Gio
File "/usr/lib/python3/dist-packages/gi/__init__.py", line 42, in <module>
from . import _gi
ImportError: cannot import name '_gi'
Comment puis-je réparer cette erreur?
Il convient également de noter que:
gnome-terminal
est maintenant un script python.gnome-terminal.real
ouvrira le terminal comme prévu.python3.5 gnome-terminal
ouvrira le terminal comme prévu.Probablement le lien symbolique /usr/bin/python3
pointe vers python3.6, ce qu'il ne devrait pas. Corrigez-le en lançant ces commandes:
Sudo rm /usr/bin/python3
Sudo ln -s python3.5 /usr/bin/python3
Il n'est pas nécessaire de pointer Python3 vers python3.5, il suffit de lancer les commandes:
cd /usr/lib/python3/dist-packages/gi/
Sudo cp _gi.cpython-35m-x86_64-linux-gnu.so _gi.cpython-36m-x86_64-linux-gnu.so
Sudo cp _gi_cairo.cpython-35m-x86_64-linux-gnu.so _gi_cairo.cpython-36m-x86_64-linux-gnu.so
Le changement correct de python3 par défaut se fait via:
Sudo update-alternatives --config python3
Bien que copier le _gi_cairo.cpython-35m-x86_64-linux-gnu.so
de python3.5 sur python3.6 puisse résoudre le problème, mais briserait la cohérence de votre bibliothèque. Et devrait être évité.
Je sais que c’est une vieille question mais pour ceux qui recherchent un moyen autre que de changer python3 en python 3.5 globalement, vous pouvez changer la première ligne de /usr/bin/gnome-terminal
de #! /usr/bin/python3
en #! /usr/bin/python3.5
.
Remarque: Je n'ai pas python 3.5 sur mon ordinateur, mais import gi
fonctionne dans python 3.6, donc utilisé 3.6 au lieu de 3.5.