Quick/pygtkスタックを使用してアプリケーションを開発しようとしています。 Gsettingsスキーマをすべて〜/ app-name-here/data/glib-2.0/schemas/net.launchpad.app-name-here.gschema.xmlに正しく設定しましたが、自分のGsettingsスキーマに問題なくアクセスできます。 〜/ 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にあるファイルで、設定の1つの値を確認しようとすると、スクリプトとして使用してバックグラウンドで実行し、同様の方法で通知を送信します。
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で設定を見つけることができるという事実にもかかわらず。何かご意見は?
だから私は自分の問題を疑似的に解決したのではないかと思います。スキーマを~/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をquickアプリの実際の名前に置き換えます)これは、アプリを* 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/
"quickly run" ./data/ディレクトリをXDG_DATA_DIRS環境変数に追加します。これにより、ローカルでコンパイルされたglibスキーマがGio.GSettingsによって検出されます。 Daemon.pyでもこれを行うと、開発ディレクトリから実行できるようになります。