O terminal Gnome não inicia

34

Eu apenas tentei instalar o python 3.6 no meu sistema Ubuntu 16.04 e agora não consigo executar o terminal a partir do iniciador ou do Ctrl + Alt + T. Tentei executar a gnome-terminalpartir do XTerm e recebi a seguinte mensagem:

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'

Como posso corrigir este erro?

Note-se também que:

  • Meu gnome-terminalarquivo agora é um script python.
  • O gnome-terminal.realarquivo abrirá o terminal conforme o esperado.
  • python3.5 gnome-terminal abrirá o terminal conforme o esperado.
bengdahl
fonte

Respostas:

34

Provavelmente o link simbólico /usr/bin/python3aponta para python3.6, o que não deveria. Corrija-o executando estes comandos:

sudo rm /usr/bin/python3
sudo ln -s python3.5 /usr/bin/python3
Gunnar Hjalmarsson
fonte
4
Para adicionar a isso: isso é causado por um bug no python3-aptpacote; há uma Launchpad bug aberto sobre isso aqui .
217 Josh Josh
O link simbólico deve ser criado em qual caminho? O pyenv não é uma alternativa melhor até que o bug do terminal seja corrigido?
josircg
@josircg: Não sei se entendi sua pergunta sobre o caminho. O link simbólico e o executável residem /usr/bin. Pode muito bem haver alternativas melhores. Se você souber de alguma, escreva uma resposta própria.
Gunnar Hjalmarsson
1
@GunnarHjalmarsson onde posso executar esses comandos, meu terminal não está abrindo.
Shoyeb Sheikh
1
@ShoyebSheikh: Talvez você tenha XTerm?
Gunnar Hjalmarsson
20

Você não precisa apontar Python3 para python3.5, apenas executando os 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
fonte
O que isso faz exatamente? É seguro?
Wjandrea
3
Essa deve ser a resposta. É seguro @wjandrea, eu o uso sem nenhum problema com o Python 3.7 no Ubuntu 18
Huan
Você pode colá-los no xterm?
Tahlor 12/09/18
Funciona para mim, esta deve ser a resposta e eu segundo @Huan
user1282043
Uma explicação do que isso faz ainda seria útil
Daniel Holmes
8

A alteração adequada do python3 padrão é feita via:

sudo update-alternatives --config python3

Embora copiar o _gi_cairo.cpython-35m-x86_64-linux-gnu.soover do python3.5 sobre o python3.6 possa resolver o problema, mas isso quebraria a consistência da biblioteca. E deve ser evitado.

Saeed
fonte
O @davidbak, o lugar correto para reclamar do Ubuntu, está na lista de discussão ou irc do Ubuntu (ou enviando patches para seus repositórios), no stackoverflow você está gritando no vazio.
Boris
3

Eu sei que essa é uma pergunta antiga, mas para quem procura uma maneira diferente de alterar python3 para python 3.5 globalmente, você pode alterar a primeira linha de /usr/bin/gnome-terminalde #! /usr/bin/python3para #! /usr/bin/python3.5.

Nota: Eu não tenho o python 3.5 no meu computador, mas import gifunciona no python 3.6, então usei o 3.6 em vez do 3.5.

FelisPhasma
fonte
É gnome-terminala única coisa que quebra ou existem outras gnome-*coisas que eu deveria mudar também?
Boris