Ошибка быстрого доступа к Gio.Gsettings в приложении

Я пытаюсь разработать приложение, используя стек fast / pygtk. Все мои схемы Gsettings настроены в ~/app-name-here/data/glib-2.0/schemas/net.launchpad.app-name-here.gschema.xml, и я могу получить к ним доступ в моем файле диалоговое окно настроек, расположенное в ~/app-name-here/app-name-here/PreferencesDialog.py через

from gi.repository import Gtk, Gio
settings = Gio.Settings("net.launchpad.app-name-here")
settings.get_boolean('notify')
settings.set_boolean('notify', True)

но когда я пытаюсь проверить значение одной из моих настроек в файле, расположенном в ~/app-name-here/bin/Daemon.py, который я использую в качестве сценария для запуска в фоновом режиме и отправки уведомлений аналогичным способом

from gi.repository import Gio
settings = Gio.Settings("net.launchpad.app-name-here")
settings.get_boolean('notify')

это терпит неудачу в линии, которая говорит

settings = Gio.Settings("net.launchpad.app-name-here")

и выплевывает неприятную ошибку

(Daemon.py:26100): GLib-GIO-ERROR **: Settings schema 'net.launchpad.app-name-here' is not installed

Несмотря на то, что я могу открыть dconf-editor и найти настройки в net / launchpad / app-name-here. Какие-нибудь мысли?

2 ответа

Так что я думаю, что, возможно, я решил свою проблему самостоятельно. Я скопировал свои схемы из ~/app-name-here/data/glib-2.0/schemas/net.launchpad.app-name-here.gschema.xml в /usr/share/glib-2.0/schemas/net.launchpad.app-name-here.gschema.xml а затем скомпилировал мои схемы. Ниже я приведу команды для этого, если это кому-нибудь поможет. (замените app-name-here настоящим именем вашего быстрого приложения) Я считаю, что это будет сделано автоматически, если я упакую свое приложение в *deb и затем установлю его. Я считаю, что проблема заключалась в том, что схемы были доступны не всем пользователям или коду вне каталога, в котором я работал.

$: sudo cp ~/app-name-here/data/glib-2.0/schemas/net.launchpad.app-name-here.gschema.xml /usr/share/glib-2.0/schemas/
$: sudo glib-compile-schemas /usr/share/glib-2.0/schemas/

"быстро запустить" добавляет каталог./data/ в переменную окружения XDG_DATA_DIRS, что позволяет Gio.GSettings локально компилировать схемы glib. Если вы сделаете это и в своем Daemon.py, вы сможете запустить его из своего каталога разработки.

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