Provavelmente, o link simbólico /usr/bin/python3
aponta 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
Eu apenas tentei instalar o python 3.6 no meu sistema Ubuntu 16.04, e agora eu não consigo rodar o terminal pelo launcher ou pelo Ctrl + Alt + T. Eu tentei executar o gnome-terminal
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 esse erro?
Também deve ser notado que:
gnome-terminal
agora é um script python. gnome-terminal.real
abrirá o terminal como esperado. python3.5 gnome-terminal
abrirá o terminal como esperado. Provavelmente, o link simbólico /usr/bin/python3
aponta 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
Você não precisa apontar o Python3 para o 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
A alteração adequada do python3 padrão é feita por meio de:
sudo update-alternatives --config python3
Embora a cópia do _gi_cairo.cpython-35m-x86_64-linux-gnu.so
do python3.5 para o python3.6 pudesse resolver o problema, mas quebraria a consistência da biblioteca. E deve ser evitado.
Eu sei que esta é uma pergunta antiga, mas para aqueles que procuram uma maneira diferente de alterar python3 para python 3.5 globalmente, você pode alterar a primeira linha de /usr/bin/gnome-terminal
de #! /usr/bin/python3
para #! /usr/bin/python3.5
.
Nota: Eu não tenho o python 3.5 no meu computador, mas import gi
funciona no python 3.6, então usei 3.6 em vez de 3.5.
Tags gnome-terminal gnome python 16.04