web-dev-qa-db-ja.com

すばやく作成されたアプリケーションでGio.Gsettingsにアクセス中にエラーが発生しました

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で設定を見つけることができるという事実にもかかわらず。何かご意見は?

1
Zane Swafford

だから私は自分の問題を疑似的に解決したのではないかと思います。スキーマを~/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/
2
Zane Swafford

"quickly run" ./data/ディレクトリをXDG_DATA_DIRS環境変数に追加します。これにより、ローカルでコンパイルされたglibスキーマがGio.GSettingsによって検出されます。 Daemon.pyでもこれを行うと、開発ディレクトリから実行できるようになります。

0
mhall119