Термінал Gnome не запуститься


34

Я просто спробував встановити python 3.6 на мою систему Ubuntu 16.04, і тепер я не можу запустити термінал із запуску або з Ctrl + Alt + T. Я спробував запустити gnome-terminalз XTerm і отримав таке повідомлення:

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'

Як я можу виправити цю помилку?

Слід також зазначити, що:

  • gnome-terminalЗараз у моєму файлі є сценарій python.
  • gnome-terminal.realФайл буде відкрито термінал , як і очікувалося.
  • python3.5 gnome-terminal відкриє термінал, як очікувалося.

Відповіді:


34

Можливо, символьне посилання /usr/bin/python3вказує на python3.6, чого не повинно. Виправте це, виконавши ці команди:

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

4
Щоб додати до цього: це спричинено помилкою в python3-aptпакеті; є Launchpad помилка приховує тут .
Джош

На якому шляху слід створити симпосилання? Хіба pyenv не є кращою альтернативою, поки не виправлена ​​термінальна помилка?
josircg

@josircg: Не впевнений, що я розумію питання вашого шляху. І симпосилання, і виконуваний файл проживають в /usr/bin. Можливо, є кращі альтернативи. Якщо ви знаєте що-небудь, будь ласка, напишіть власну відповідь.
Gunnar Hjalmarsson

1
@GunnarHjalmarsson, де я можу запустити ці команди, мій термінал не відкривається.
Шейб Шейх

1
@ShoyebSheikh: Можливо, у вас є XTerm?
Gunnar Hjalmarsson

20

Вам не потрібно вказувати Python3 на python3.5, просто виконуючи команди:

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

Що це робить саме? Це безпечно?
wjandrea

3
Це має бути відповіддю. Це безпечно @wjandrea, я використовую його без проблем з Python 3.7 під Ubuntu 18
Huan

Чи можете ви вставити їх у xterm?
Тахлор

Працює для мене, це має бути відповіддю, і я другий @Huan
користувач1282043

Пояснення того, що це все-таки допоможе,
Даніель Холмс

8

Правильна зміна типового python3 здійснюється за допомогою:

sudo update-alternatives --config python3

Хоча копіювання _gi_cairo.cpython-35m-x86_64-linux-gnu.soфайлу python3.5 над python3.6 може вирішити проблему, але порушить узгодженість вашої бібліотеки. І цього слід уникати.


@davidbak правильне місце для скарги на Ubuntu є у списку розсилки Ubuntu irc або розсилки (або надсилаючи патчі до їх сховищ), в stackoverflow ви просто кричите в порожнечу.
Борис

3

Я знаю, що це старе питання, але для тих, хто шукає інший спосіб, крім зміни python3 на python 3.5 в усьому світі, ви можете змінити перший рядок /usr/bin/gnome-terminalз #! /usr/bin/python3на #! /usr/bin/python3.5.

Примітка. У мене немає комп'ютера python 3.5, але він import giпрацює в python 3.6, тому використовується 3.6 замість 3.5.


Це gnome-terminalєдине, що ламається, чи є інші gnome-*речі, які я також повинен змінити?
Борис
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.