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:
Откройте файл:
/usr/lib/python3/dist-packages/kazam/frontend/indicator.py
Найдите эти строки (около строки 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")
Прокомментируйте их:
#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")
Сохраните файл.
Запустите Казам.
Ты восхитителен.
После этого вы не сможете использовать эти горячие клавиши, но, по крайней мере, 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