La terminal de GNOME no se iniciará

34

Acabo de intentar instalar Python 3.6 en mi sistema Ubuntu 16.04, y ahora no puedo ejecutar el terminal desde el iniciador o desde Ctrl + Alt + T. Intenté ejecutar gnome-terminaldesde XTerm y recibí el siguiente mensaje:

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'

¿Cómo puedo solucionar este error?

También debe tenerse en cuenta que:

  • Mi gnome-terminalarchivo ahora es un script de Python.
  • El gnome-terminal.realarchivo abrirá la terminal como se esperaba.
  • python3.5 gnome-terminal abrirá la terminal como se esperaba.
bengdahl
fuente

Respuestas:

34

Probablemente el enlace simbólico /usr/bin/python3apunta a python3.6, que no debería. Arregla ejecutando estos comandos:

sudo rm /usr/bin/python3
sudo ln -s python3.5 /usr/bin/python3
Gunnar Hjalmarsson
fuente
44
Para agregar a esto: esto es causado por un error en el python3-aptpaquete; hay un error de Launchpad abierto al respecto aquí .
Josh
El enlace simbólico debe crearse en qué ruta? ¿No es pyenv una mejor alternativa hasta que se solucione el error del terminal?
josircg
@josircg: No estoy seguro de entender tu pregunta de ruta. Tanto el enlace simbólico como el ejecutable residen en /usr/bin. Bien puede haber mejores alternativas. Si conoce alguna, escriba una respuesta propia.
Gunnar Hjalmarsson
1
@GunnarHjalmarsson donde puedo ejecutar estos comandos, mi terminal no se está abriendo.
Shoyeb Sheikh
1
@ShoyebSheikh: ¿Quizás tienes XTerm?
Gunnar Hjalmarsson
20

No tiene que apuntar Python3 a python3.5, solo ejecuta los comandos:

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
fuente
¿Qué hace esto exactamente? ¿Es seguro?
wjandrea
3
Esta debería ser la respuesta. Es seguro @wjandrea, lo uso sin ningún problema con Python 3.7 en Ubuntu 18
Huan
¿Puedes pegarlos en xterm?
Tahlor
Funciona para mí, esta debería ser la respuesta y yo segundo @Huan
user1282043
Una explicación de lo que esto hace todavía sería útil
Daniel Holmes
8

El cambio adecuado de python3 predeterminado se realiza a través de:

sudo update-alternatives --config python3

Aunque copiar el _gi_cairo.cpython-35m-x86_64-linux-gnu.soover de python3.5 sobre python3.6 podría resolver el problema, rompería la consistencia de la biblioteca. Y debe ser evitado.

Saeed
fuente
@davidbak el lugar correcto para quejarse de Ubuntu es en el irc de Ubuntu o en la lista de correo (o enviando parches a sus repositorios), en stackoverflow estás gritando en el vacío.
Boris
3

Sé que esta es una vieja pregunta, pero para aquellos que buscan una forma diferente de cambiar python3 a python 3.5 globalmente, pueden cambiar la primera línea de /usr/bin/gnome-terminalde #! /usr/bin/python3a #! /usr/bin/python3.5.

Nota: No tengo Python 3.5 en mi computadora, pero import gifunciona en Python 3.6, así que utilicé 3.6 en lugar de 3.5.

FelisPhasma
fuente
¿Es gnome-terminallo único que se rompe o hay otras gnome-*cosas que debería cambiar también?
Boris