Сбой kazam с & ldquo; PyGIWarning: Gtk был импортирован без указания первой версии & hellip; & rdquo;

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

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

Обновление: enter image description here

    /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)
0
задан 28 December 2018 в 14:18

4 ответа

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

sudo apt-get update
sudo apt-get install python3-xlib
0
ответ дан 28 December 2018 в 14:18

Проблема с этой ошибкой сегментации заключается в привязках горячих клавиш 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. Run Kazam.

  6. Вы великолепны.

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

4
ответ дан 28 December 2018 в 14:18

Простая установка python3-xlib решила вашу конкретную проблему Segmentation Fault с 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 Documentation:

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 году.

2
ответ дан 19 June 2020 в 00:23

В 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

1
ответ дан 13 September 2020 в 16:52

Другие вопросы по тегам:

Похожие вопросы: