Ошибка быстрого доступа к 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, вы сможете запустить его из своего каталога разработки.