kazam завершается с ошибкой "PyGIWarning: Gtk был импортирован без указания версии сначала..."

После установки программы кастинга экрана kazam он не запускается.

Я использую Ubuntu 17.04.

Обновить:

    /usr/bin/kazam:32: PyGIWarning: Gtk was imported without specifying a version first. Use gi.require_version('Gtk', '3.0') before import to ensure that the right version gets loaded.
  from gi.repository import Gtk
/usr/lib/python3/dist-packages/kazam/frontend/window_area.py:30: PyGIWarning: Wnck was imported without specifying a version first. Use gi.require_version('Wnck', '3.0') before import to ensure that the right version gets loaded.
  from gi.repository import Gtk, GObject, Gdk, Wnck, GdkX11
/usr/lib/python3/dist-packages/kazam/backend/gstreamer.py:35: PyGIWarning: Gst was imported without specifying a version first. Use gi.require_version('Gst', '1.0') before import to ensure that the right version gets loaded.
  from gi.repository import GObject, Gst
/usr/lib/python3/dist-packages/kazam/frontend/indicator.py:148: PyGIWarning: AppIndicator3 was imported without specifying a version first. Use gi.require_version('AppIndicator3', '0.1') before import to ensure that the right version gets loaded.
  from gi.repository import AppIndicator3
/usr/lib/python3/dist-packages/kazam/frontend/indicator.py:97: PyGIWarning: Keybinder was imported without specifying a version first. Use gi.require_version('Keybinder', '3.0') before import to ensure that the right version gets loaded.
  from gi.repository import Keybinder
Segmentation fault (core dumped)

5 ответов

Решение

Решено: мне просто нужно было установить python3-xlib:

sudo apt-get update
sudo apt-get install python3-xlib

Простая установка python3-xlib решил вашу конкретную проблему с ошибкой сегментации с помощью Kazam, но вы, возможно, заметили, что по-прежнему есть несколько предупреждений PyGI об импорте "без предварительного указания версии".

Поскольку этот вопрос является номером 1 в Google по таким предупреждениям (вот как я здесь наткнулся), вот как изменить код, чтобы предотвратить такие предупреждения, как описано в самих предупреждениях.

Вместо:

from gi.repository import Gtk, GObject, Gdk, Wnck, GdkX11, Gst, AppIndicator3

Что выдает несколько предупреждений:

__main__:1: PyGIWarning: Gtk was imported without specifying a version first. Use gi.require_version('Gtk', '3.0') before import to ensure that the right version gets loaded.
__main__:1: PyGIWarning: Wnck was imported without specifying a version first. Use gi.require_version('Wnck', '3.0') before import to ensure that the right version gets loaded.
__main__:1: PyGIWarning: Gst was imported without specifying a version first. Use gi.require_version('Gst', '1.0') before import to ensure that the right version gets loaded.
__main__:1: PyGIWarning: AppIndicator3 was imported without specifying a version first. Use gi.require_version('AppIndicator3', '0.1') before import to ensure that the right version gets loaded.

Используйте это, согласно официальной документации PyGOobject:

import gi
gi.require_version('Gtk', '3.0')
gi.require_version('Wnck', '3.0')
gi.require_version('Gst', '1.0')
gi.require_version('AppIndicator3', '0.1')
from gi.repository import Gtk, GObject, Gdk, Wnck, GdkX11, Gst, AppIndicator3

Видимо не все giДля подмодулей требуется указать версию.

Или, в качестве альтернативы, вы можете потребовать все версии в одном операторе, используя require_versions() функция (обратите внимание на множественное число), которая принимает единственный словарь модулей и их соответствующие версии:

import gi
gi.require_versions({
    'Gtk':  '3.0',
    'Wnck': '3.0',
    'Gst':  '1.0',
    'AppIndicator3': '0.1',
})
from gi.repository import Gtk, GObject, Gdk, Wnck, GdkX11, Gst, AppIndicator3

Эта функция не указана в официальных документах, но она была добавлена ​​в PyGObject 3.21.0, выпущенном в 2016 году.

Проблема с этой ошибкой сегментации заключается в привязках горячих клавиш Kazam. Может быть, система не может дать некоторые ключи Kazam, таким образом, мы получаем исключение.

Грубое решение состоит в том, чтобы удалить глобальные настройки Kazam:

  1. Откройте файл:
    /usr/lib/python3/dist-packages/kazam/frontend/indicator.py

  2. Найдите эти строки (около строки 100 или около того):

    Keybinder.bind("<Super><Ctrl>R", self.cb_hotkeys, "start-request")
    Keybinder.bind("<Super><Ctrl>F", self.cb_hotkeys, "stop-request")
    Keybinder.bind("<Super><Ctrl>P", self.cb_hotkeys, "pause-request")
    Keybinder.bind("<Super><Ctrl>W", self.cb_hotkeys, "show-request")
    Keybinder.bind("<Super><Ctrl>Q", self.cb_hotkeys, "quit-request")
    
  3. Прокомментируйте их:

    #Keybinder.bind("<Super><Ctrl>R", self.cb_hotkeys, "start-request")
    #Keybinder.bind("<Super><Ctrl>F", self.cb_hotkeys, "stop-request")
    #Keybinder.bind("<Super><Ctrl>P", self.cb_hotkeys, "pause-request")
    #Keybinder.bind("<Super><Ctrl>W", self.cb_hotkeys, "show-request")
    #Keybinder.bind("<Super><Ctrl>Q", self.cb_hotkeys, "quit-request")
    
  4. Сохраните файл.

  5. Запустите Казам.

  6. Ты восхитителен.

После этого вы не сможете использовать эти горячие клавиши, но, по крайней мере, Kazam будет работать.

В Ubuntu 20.04 мне больше повезло с вилкой GitHub. Вот шаги:

  • (По желанию) sudo ppa-purge ppa:sylvain-pineau/kazam
  • sudo apt remove kazam
  • sudo apt install python3-cairo python3-xlib python3-distutils-extra (зависимости)
  • Загрузите https://github.com/henrywoo/kazam-screen-recorder/archive/master.zip
  • Разархивируйте это
  • cd в распакованную папку
  • sudo python3 setup.py install

По умолчанию это устанавливается в /usr/local/bin/kazam, который уже должен быть в вашем PATH.

Для меня этот местный казам тоже появился как лаунчер с иконками. Однако они могут быть оставлены из пакета Ubuntu или из приведенного выше PPA.

Если у вас возникли проблемы с выбором микрофона, используйте эту команду после установки (используя соответствующую версию Python):

sudo sed -i 's/time.clock/time.perf_counter/g' python3.8/dist-packages/kazam/pulseaudio/pulseaudio.py

Вы можете просто использовать:

      pip install --upgrade --force-reinstall kazam
Другие вопросы по тегам