Le terminal Gnome ne démarre pas

34

J'ai juste essayé d'installer python 3.6 sur mon système Ubuntu 16.04, et maintenant je ne peux plus exécuter le terminal depuis le lanceur ou depuis Ctrl + Alt + T. J'ai essayé de courir à gnome-terminalpartir 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 corriger cette erreur?

Il convient également de noter que:

  • Mon gnome-terminalfichier est maintenant un script python.
  • Le gnome-terminal.realfichier ouvrira le terminal comme prévu.
  • python3.5 gnome-terminal ouvrira le terminal comme prévu.
bengdahl
la source

Réponses:

34

Le lien symbolique /usr/bin/python3pointe probablement vers python3.6, ce qu'il ne devrait pas faire. Corrigez-le en exécutant ces commandes:

sudo rm /usr/bin/python3
sudo ln -s python3.5 /usr/bin/python3
Gunnar Hjalmarsson
la source
4
Pour ajouter à cela: cela est dû à un bogue dans le python3-aptpackage; il y a un bogue Launchpad ouvert à ce sujet ici .
Josh
Le lien symbolique doit être créé sur quel chemin? Pyenv n'est-il pas une meilleure alternative tant que le bug du terminal n'est pas corrigé?
josircg
@josircg: Je ne suis pas sûr de comprendre votre question de chemin. Le lien symbolique et l'exécutable résident /usr/bin. Il pourrait bien y avoir de meilleures alternatives. Si vous en connaissez, veuillez écrire votre propre réponse.
Gunnar Hjalmarsson
1
@GunnarHjalmarsson où puis-je exécuter ces commandes, mon terminal ne s'ouvre pas.
Shoyeb Sheikh
1
@ShoyebSheikh: Peut-être que vous avez XTerm?
Gunnar Hjalmarsson
20

Vous n'avez pas à pointer Python3 vers python3.5, il suffit d'exécuter 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
Inno Jia
la source
Qu'est-ce que cela fait exactement? Est-ce sûr?
wjandrea
3
Cela devrait être la réponse. Il est sûr @wjandrea, je l'utilise sans aucun problème avec Python 3.7 sous Ubuntu 18
Huan
Pouvez-vous les coller dans xterm?
Tahlor
Fonctionne pour moi, cela devrait être la réponse et j'appuie @Huan
user1282043
Une explication de ce que cela fait serait toujours utile
Daniel Holmes
8

Le changement correct de python3 par défaut se fait via:

sudo update-alternatives --config python3

Bien que la copie _gi_cairo.cpython-35m-x86_64-linux-gnu.sode python3.5 sur python3.6 puisse résoudre le problème, mais briserait la cohérence de votre bibliothèque. Et devrait être évité.

Saeed
la source
@davidbak le bon endroit pour se plaindre d'Ubuntu est sur la liste de diffusion ou la liste de diffusion Ubuntu (ou la soumission de correctifs à leurs référentiels), sur stackoverflow vous criez juste dans le vide.
Boris
3

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-terminalde #! /usr/bin/python3à #! /usr/bin/python3.5.

Remarque: je n'ai pas python 3.5 sur mon ordinateur mais import gifonctionne en python 3.6, donc utilisé 3.6 au lieu de 3.5.

FelisPhasma
la source
Est-ce gnome-terminalla seule chose qui casse ou y a-t-il d'autres gnome-*choses que je devrais changer aussi?
Boris