Обновлено до Python 3.8 - Терминал не открывается - [Исправлено], но детали не поняты - PullRequest
3 голосов
/ 10 апреля 2020

Я обновил свою систему (Ubuntu 18.04) с Python 3,6 до Python 3,8 и сбросил настройки по умолчанию, так что python3 теперь указывает на Python 3,8 (а не 3,6). Однако с тех пор терминал отказался открываться с помощью Ctrl + Alt + T и других очевидных методов, таких как нажатие на сам значок.

Когда я запускаю gnome-terminal - я получаю следующее:

usernew@HP:/usr/lib/python3/dist-packages/gi$ gnome-terminal
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' from partially initialized module 'gi' (most likely due to a circular import) (/usr/lib/python3/dist-packages/gi/__init__.py)

Я не знаю, что это значит, но я думаю, это определенно указывает на тот факт, что во время Обновить. Я понимаю, что существуют другие существующие темы по схожим вопросам, но большинство из них касалось обновления с Python2 до Python3, поэтому я не уверен, что они актуальны.

Может ли кто-нибудь помочь, пожалуйста?

Важное обновление : Итак, после прочтения этого ответа - я изменил первую строку сценария gnome-terminal на #!/usr/bin/python3.6 вместо #!/usr/bin/python3.8 - и это решает проблему.

Кроме того, когда я набираю python3 в терминале, меня приветствуют Python 3.8.2, по желанию.

Остается вопрос - Почему эта работа ? В чем была реальная проблема? Объяснение помогло бы, поэтому я действительно знаю, что делаю.

Спасибо!

1 Ответ

2 голосов
/ 10 апреля 2020

Вы не должны изменять символическую ссылку /usr/bin/python3, так как от этого зависит куча компонентов Ubuntu, а библиотеки c Python, такие как gi, определяемые Ubuntu, создаются только для сборки Python, поставляемой с Ubuntu. , версия 3.6 на 18.04.

См. Терминал Gnome не запустится в Ask Ubuntu (хотя обратите внимание, что речь идет об Ubuntu 16.04, которая использует Python 3.5). Поэтому лучший способ исправить это - восстановить символическую ссылку:

sudo ln -sf python3.6 /usr/bin/python3

Что касается установки Python 3.8 в качестве значения по умолчанию, вы можете поместить псевдоним в ваш bashr c :

alias python3=python3.8

Но это повлияет только на оболочку для вашего пользователя. Например, в сценариях, если вы хотите использовать Python 3.8, вам придется написать его, то есть #!/usr/bin/env python3.8

...