47 votes

Le terminal Gnome ne veut pas démarrer

J'ai 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 lanceur ou en utilisant Ctrl + Alt + T. J'ai essayé d'exécuter gnome-terminal depuis XTerm et j'ai obtenu le message suivant :

Traceback (most recent call last):
  File "/usr/bin/gnome-terminal", line 9, in 
    from gi.repository import GLib, Gio
  File "/usr/lib/python3/dist-packages/gi/__init__.py", line 42, in 
    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 
    from apport.report import Report
  File "/usr/lib/python3/dist-packages/apport/report.py", line 30, in 
    import apport.fileutils
  File "/usr/lib/python3/dist-packages/apport/fileutils.py", line 23, in 
    from apport.packaging_impl import impl as packaging
  File "/usr/lib/python3/dist-packages/apport/packaging_impl.py", line 23, in 
    import apt
  File "/usr/lib/python3/dist-packages/apt/__init__.py", line 23, in 
    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 
    from gi.repository import GLib, Gio
  File "/usr/lib/python3/dist-packages/gi/__init__.py", line 42, in 
    from . import _gi
ImportError: cannot import name '_gi'

Comment puis-je corriger cette erreur ?

Il convient également de noter que :

  • Mon fichier gnome-terminal est désormais un script python.
  • Le fichier gnome-terminal.real ouvrira le terminal comme prévu.
  • python3.5 gnome-terminal ouvrira le terminal comme prévu.

49voto

Wade73 Points 2102

Sans doute le lien symbolique /usr/bin/python3 pointe vers python3.6, ce qui ne devrait pas être le cas. Corrigez-le en exécutant ces commandes:

sudo rm /usr/bin/python3
sudo ln -s python3.5 /usr/bin/python3

31voto

Inno Jia Points 427

Vous n'avez pas besoin de 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

11voto

Saeed Points 361

La modification appropriée du python3 par défaut se fait via :

sudo update-alternatives --config python3

Bien que la copie du _gi_cairo.cpython-35m-x86_64-linux-gnu.so de python3.5 à python3.6 pourrait résoudre le problème, cela compromettrait la cohérence de votre bibliothèque. Il faut éviter cette méthode.

7voto

FelisPhasma Points 71

Je sais que c'est une vieille question, mais pour ceux qui cherchent une manière 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 à #! /usr/bin/python3.5.

Note : Je n'ai pas python 3.5 sur mon ordinateur mais import gi fonctionne en python 3.6, donc j'ai utilisé 3.6 à la place de 3.5.

3voto

RAISON RÉELLE + SOLUTION - Python3.7 Gnome Terminal Gets Messed Up - Ubuntu Linux Mint

CETTE QUESTION N'A JAMAIS ÉTÉ RÉPONDUE dans un autre post ici Terminal not opening up after upgrading python to 3.7 donc je donne la cause, la raison et la solution.

Installer python 3.7, bonne décision, mais l'absence de PyGObject gi provoque un échec du terminal Gnome au démarrage, correction facile

  • sudo apt update && sudo apt upgrade && sudo apt autoremove
  • sudo apt install python3.7 python3.7-dev ffmpeg
  • sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.6 1
  • sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.7 2
  • sudo update-alternatives --config python3 # sélectionner 3.7
  • python3 -V # doit être la version 3.7.5 ou supérieure
  • NE REDÉMARREZ PAS ICI .. ENCORE, le terminal gnome ne fonctionnera pas.

CONTRE-MESURE POUR LES NOVICES: EN MODE DE RÉCUPÉRATION AVANCÉ DE LINUX - (DONC NE REBOOTEZ PAS ENCORE)

  • $ NE FAITES PAS sudo update-alternatives --config python3 # sélectionnez 3.6 Cela vous ramène votre terminal mais CE N'EST PAS LA SOLUTION.

( Explication: - [https://pygobject.readthedocs.io/en/latest/getting\_started.html#ubuntu-getting-started\]\[1] )

LA SOLUTION EST SIMPLEMENT D'INSTALLER CE QUI MANQUAIT.

  • python3 -V # doit être python 3.7

  • mkdir -p ~/.local/bin ; cd .local/bin

  • vi hello.py # utilisez nano ou tout éditeur - c'est un programme de test. Voir le lien de référence à la fin.

        # Script de test
        import gi
        gi.require_version("Gtk", "3.0")
        from gi.repository import Gtk
    
        fenetre = Gtk.Window(title="Bonjour tout le monde")
        fenetre.show()
        fenetre.connect("destroy", Gtk.main_quit)
        Gtk.main()
  • sudo update-alternatives --config python3 # définir python 3.7

  • python3 hello.py # cela NE fonctionne PAS donc installez des trucs ...

  • sudo apt install python3-gi python3-gi-cairo gir1.2-gtk-3.0

  • sudo apt install libgirepository1.0-dev gcc libcairo2-dev pkg-config python3.7-dev

  • python3 hello.py # cela peut encore ne pas fonctionner, installez PLUS de trucs

Si vous installez pip pour solutionner, notez que cela s'installe pour l'utilisateur uniquement.
Pour d'autres Linux ou une installation sans pip veuillez utiliser le lien à la fin.

  • sudo -k # Remarquez que pip n'est PAS SÉCURITAIRE, désactivez sudo!

  • python3 -m pip install -U pycairo # cela utilise automatiquement pip3

  • python3 -m pip install -U PyGObject # CELA RÉSOUD LE PROBLÈME!

  • python3 hello.py # FONCTIONNE! N.B. les autres utilisateurs doivent installer la même chose!

  • sudo shutdown -r now # D'ACCORD MAINTENANT VOUS POUVEZ REBOOTER. Le terminal Gnome fonctionnera.

  • Remarque mon style pip python3 appelle en fait pip3 et non pip.

  • Vraie cause sur Ubuntu ou Linux Mint: /usr/bin/gnome-terminal appelle python3 par défaut qui est 3.7 et constate que votre inclus gi PyGObject est manquant donc le terminal est inutilisable avec chaque utilisateur manquant du panneau de contrôle.

En conclusion, vous pouvez garder votre mise à niveau de python.

Références: [1]: Test de PyGObject incluant gi https://pygobject.readthedocs.io/en/latest/getting_started.html#ubuntu-getting-started

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X