Il terminale Gnome non si avvia


34

Ho appena provato a installare Python 3.6 sul mio sistema Ubuntu 16.04, e ora non riesco a eseguire il terminale dal launcher o da Ctrl + Alt + T. Ho provato a correre gnome-terminalda XTerm e ho ricevuto il seguente messaggio:

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'

Come posso correggere questo errore?

Va inoltre notato che:

  • Il mio gnome-terminalfile ora è uno script Python.
  • Il gnome-terminal.realfile aprirà il terminale come previsto.
  • python3.5 gnome-terminal aprirà il terminale come previsto.

Risposte:


34

Probabilmente il link simbolico /usr/bin/python3punta a python3.6, cosa che non dovrebbe. Risolvilo eseguendo questi comandi:

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

4
Per aggiungere a questo: questo è causato da un bug nel python3-aptpacchetto; c'è un bug di Launchpad aperto al riguardo qui .
Josh,

Il link simbolico dovrebbe essere creato su quale percorso? Pyenv non è un'alternativa migliore fino a quando il bug terminale non viene corretto?
josircg

@josircg: Non sono sicuro di aver capito la tua domanda sul percorso. Risiedono sia il symlink che l'eseguibile /usr/bin. Potrebbero esserci alternative migliori. Se ne conosci qualcuno, ti preghiamo di scrivere una risposta.
Gunnar Hjalmarsson,

1
@GunnarHjalmarsson dove posso eseguire questi comandi, il mio terminale non si apre.
Shoyeb Sheikh,

1
@ShoyebSheikh: Forse hai XTerm?
Gunnar Hjalmarsson

20

Non devi puntare Python3 a python3.5, eseguendo solo i comandi:

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

Cosa fa esattamente questo? È sicuro?
wjandrea,

3
Questa dovrebbe essere la risposta. È sicuro @wjandrea, lo uso senza problemi con Python 3.7 sotto Ubuntu 18
Huan

Puoi incollarli in xterm?
Tahlor,

Funziona per me, questa dovrebbe essere la risposta e io secondo @Huan
user1282043

Una spiegazione di ciò che farebbe sarebbe ancora utile
Daniel Holmes,

8

La corretta modifica del python3 predefinito viene effettuata tramite:

sudo update-alternatives --config python3

Anche se copiare il _gi_cairo.cpython-35m-x86_64-linux-gnu.soover da python3.5 su python3.6 potrebbe risolvere il problema, ma comprometterebbe la coerenza della libreria. E dovrebbe essere evitato.


@davidbak il posto giusto per lamentarsi di Ubuntu è nella lista o nella mailing list di Ubuntu (o inviando patch ai loro repository), su StackOverflow stai solo urlando nel vuoto.
Boris il

3

So che questa è una vecchia domanda, ma per coloro che cercano un modo diverso dal cambiare python3 in python 3.5 a livello globale, è possibile cambiare la prima riga di /usr/bin/gnome-terminalda #! /usr/bin/python3a #! /usr/bin/python3.5.

Nota: non ho Python 3.5 sul mio computer ma import gifunziona in Python 3.6, quindi ho usato 3.6 invece di 3.5.


È gnome-terminall'unica cosa che si rompe o ci sono altre gnome-*cose che dovrei cambiare anche io?
Boris,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.