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

Я пытаюсь разработать приложение с использованием стека quick / 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. Есть мысли?

1
задан 11 November 2012 в 14:46

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/
0
ответ дан 11 November 2012 в 14:46

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

0
ответ дан 11 November 2012 в 14:46

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

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