应用程序的用户设置应该存储在哪里?

如果我想让我的应用程序存储一些设置,在应用程序关闭时仍然保留,那么应该将它们存储在哪里?
我不是在谈论任何复杂的东西:两个布尔值和一个字符串(尽管在将来我可能想要存储更复杂的设置)
我听说过gconf、dconf、gsettings等等。哪种是“首选”方法?最好是Python中简单易用的一种。

相关链接:http://askubuntu.com/questions/42438/what-is-the-preferred-way-to-store-application-settings - Tachyons
3个回答

应用程序在整个系统范围内运行

存储设置的适当位置应该是:

/etc/[application]/

其中一个子目录是可选的。


应用程序以“每个用户”模式运行
设置应存储在用户的主目录中,最好是在一个隐藏的目录中:
/home/<user>/<.application>/

另请参阅Debian FHS

X-Desktop中运行的应用程序

X-Desktop(例如GNOME、KDE、Unity、Xfce)的应用程序应参考XDG基本目录规范,其中定义了以下文件位置的本地变量:

$XDG_DATA_HOME 定义了用户特定数据文件应存储的基本目录。如果 $XDG_DATA_HOME 未设置或为空,则默认使用 $HOME/.local/share。 $XDG_CONFIG_HOME 定义了用户特定配置文件应存储的基本目录。如果 $XDG_CONFIG_HOME 未设置或为空,则默认使用 $HOME/.config。 $XDG_DATA_DIRS 定义了用于搜索数据文件的首选顺序的基本目录集合,除了 $XDG_DATA_HOME 基本目录之外。$XDG_DATA_DIRS 中的目录应以冒号 ':' 分隔。
如果 $XDG_DATA_DIRS 未设置或为空,则默认使用 /usr/local/share/:/usr/share/。 $XDG_CONFIG_DIRS 定义了用于搜索配置文件的首选顺序的基本目录集合,除了 $XDG_CONFIG_HOME 基本目录之外。$XDG_CONFIG_DIRS 中的目录应以冒号 ':' 分隔。如果 $XDG_CONFIG_DIRS 未设置或为空,则默认使用 /etc/xdg。

不,它们应该在/home/<user>/.config/application/中。 - Anonymous
@匿名:如果有一个参考资料就太好了。目前的Debian政策要求使用FHS 2.3,特例是应用程序被推荐将用户设置存储在用户的HOME目录下的点文件(或目录)中。 - Takkat

已经被弃用,所以对于一个新项目,我不会使用它。是一个用于存储设置的后端,作为应用程序开发者,你通常不需要操心它。

你似乎需要的是,一个高级API(C的API文档),用于存储/检索设置,而不需要关心它们实际上是如何存储的。是的一部分,它是gnome的核心软件包之一(就像和)。这篇博客文章简要介绍了如何在Python中使用它。

如果您不想依赖于gio(例如,您不是开发GNOME应用程序),并且希望存储简单的配置文件,我建议使用$HOME/.config目录(或由$XDG_CONFIG_DIRS定义的任何目录),而不是$HOME/.your_appname,以符合freedesktop规范

似乎你提供的博客文章链接已失效。有没有其他链接的机会? - Seth
@Seth 很不幸,我之前链接的博客文章似乎已经无法访问了。我已经将链接替换为另一篇博客文章的链接,这也应该是一个很好的起点。 - Marcel Stimberg