Gnome-терминал не запускается из-за ошибки в скрипте Python, связанной с GI
Когда я запускаю gnome-терминал, я получаю следующую ошибку:
Traceback (most recent call last):
File "/usr/bin/gnome-terminal", line 9, in <module>
from gi.repository import GLib, Gio
File "/usr/local/lib/python3.4/dist-packages/gi/__init__.py", line 39
print url
Это выглядит странно для меня, потому что сценарий находится в установке Python3.4, но вызывает print, как если бы это был сценарий Python2 (именно поэтому возникает ошибка).
Я попытался переустановить пакет gi с pip3, но он продолжает устанавливать эту версию, которая выглядит как скрипт python2.
Мой gnome-терминал указывает на / usr / bin / gnome-терминал, который является скриптом на python, который начинается с #! / Usr / bin / python3.
Строки с этой конкретной ошибкой в init.py:
if __name__ == '__main__':
try:
url = save_file()
print url
except GistError as e:
print e.value
Это предлагает быстрое решение: поставить скобки в этих двух печатных строках.
File "/usr/bin/gnome-terminal", line 9, in <module>
from gi.repository import GLib, Gio
ImportError: No module named 'gi.repository'
Что странно.
Это должно быть запущено в / usr / bin / python3, потому что это то, что на shebang в / usr / bin / gnome-Terminal.
python3 в / usr / bin - это ссылка на python3.4, который является двоичным файлом.
Затем я запускаю pip3 install gi и получаю следующий вывод, который говорит мне, что на самом деле gi установлен.
Requirement already satisfied (use --upgrade to upgrade): gi in /usr/local/lib/python3.4/dist-packages
Requirement already satisfied (use --upgrade to upgrade): requests in /usr/lib/python3/dist-packages (from gi)
И сейчас у меня нет идей.
Это началось после того, как я попытался установить Pumubuntu с https://github.com/Pumubuntu/Pumubuntu.
В основном файле скрипта написано:
import sys
if len(sys.argv) == 1:
print('Importing Python modules. If one is missing get it with:\n'
' "sudo apt-get install python-..." or\n'
' "sudo apt-get install girX.Y-..." for gi.repository imports.')
Поэтому я подумал, что должен ввести эти команды. И это, должно быть, сломало мою установку gir (gir).
Кто-нибудь может мне помочь?
6 ответов
Еще один способ исправить эту ошибку - изменить gnome-terminal
сценарий находится в /usr/bin/
и изменение среды (первая строка скрипта) из #!/usr/bin/python3
в #!/usr/bin/python
переключиться с Python 3 на Python 2, так как командная строка Github предназначена для Python 2, как отмечалось в предыдущем ответе.
Поэтому откройте xterm
нажав клавишу Super (клавиша рядом с левой клавишей Alt внизу) или нажав Alt + F2 и набрав xterm
найти альтернативный терминал и щелкнуть по нему для запуска. Далее введите sudo gedit /usr/bin/gnome-terminal
нажмите ENTER и отредактируйте первую строку в соответствии с вышеизложенным. Это не лучшее решение, так как вам не нужно было редактировать скрипт, но он работал для меня и не требовал удаления чего-либо.
Обновить
Самая последняя сборка этого требует Python 3, поэтому, как заявил Джон М. в своих комментариях, измените первую строку файла, чтобы использовать Python 3.5:
#!/usr/bin/python3.5
В Python 3.5 я делаю это:
sudo vim /usr/bin/gnome-terminal
- Изменить первую строку из
#!/usr/bin/python
в#!/usr/bin/python3.5
Это исправило мою проблему!
Это старый вопрос, но это первый гугл-хит, на который нужно ответить.
Ошибка вызвана установкой пакета gi на python3.
Это пакет для командной строки GIST Github для python2. Это не связано с объектом гнома или интроспекцией гнома. Посетите его здесь: Python GI на индекс пакета
Это вызывает конфликты имен с gi.repository, а не ищет gir в ваших дистрибутивах python, вашей системе __init__
Ги пакет. И, следовательно, ошибка показывает
ImportError: No module named 'gi.repository'
Удаление этого пакета устранит ошибку. Также, если вы ищете помощника, попробуйте defunkt gist
У меня также возникла эта проблема после обновления python3.5 до python3.6
Это не лучший способ, но работает нормально.
эта проблема возникает из-за _gi_cairo . Я решил это, выполнив следующий код
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
Со мной случилось со скриптом /usr/bin/chrome-gnome-shell в Linux (RHEL 7.6):
Traceback (most recent call last):
Traceback (most recent call last):
File "/usr/bin/chrome-gnome-shell", line 16, in <module>
from gi.repository import GLib, Gio
ModuleNotFoundError: No module named 'gi'
Чтобы исправить это, мне пришлось установить PyGObject:
$ sudo yum install python36-gobject.x86_64
# or directly with pip: pip3 install PyGObject
После завершения установки запуск сценария не показал ошибок.
Изменение версии Python 3 приводит к более чем просто неудачному запуску, поскольку Python 3 необходим для работы многих компонентов. Когда вы устанавливаете более новую версию Python, не все пакеты, необходимые для всех компонентов, устанавливаются для нового Python; на случай, если
gnome-terminal
это, а в случае других приложений есть и другие. Так что будьте очень осторожны с обновлением Python 3.
Использовать
update-alternative
выбрать предыдущую версию Python, так как она укажет
python3
альтернативы правильной версии с
gi
установлен. Если нечего настраивать, попробуйте установить 2 версии python в
update-alternatives
и выберите старую версию.