python包的数据缓存

时间:2009-12-09 15:40:20

标签: python distutils

我有一个python模块,它生成大型数据文件,我想在磁盘上缓存以备将来使用。对于普通用户来说,缓存很可能会达到几百MB,但是节省了大量的计算时间。

文件不随模块一起分发,但是在第一次使用给定参数集运行代码时生成。

到目前为止,我一直在使用单个文件模块,并将它们放在相对于模块(数据/)的硬编码路径中。但是我现在需要在带有distutils的Python包中分发这个模块,我想知道是否有标准的方法来做到这一点。

我在考虑像scipy.weave的编译缓存之类的东西 - 但是想知道是否有更现代的支持方式。在* nix平台上,我希望它会进入~/.something,但我不确定它的等效窗口是什么。此外,这应该是可配置的,以便用户可以将其指向其他地方,如果它更方便,或者在用户之间共享缓存目录。这样的配置文件应该如何工作?它应该去哪里?

或者我应该将它作为安装选项,通过setup.py旁边的配置文件或通过手动编辑setup.py来设置,然后在安装之前对模块中的目录进行硬编码?

任何指针都得到了很好的收获......

2 个答案:

答案 0 :(得分:3)

您可以使用标准库模块ConfigParser来解析ini文件(或.rc文件,具体取决于您的文化)。要查找文件,os.path.expanduser是一个非常有用的函数,它可以在所有平台上为“〜/ .mytoolrc”这样的路径做正确的事情。要让用户覆盖事物的位置,您可以通过os.environ使用环境变量。

答案 1 :(得分:2)

免费操作系统世界中有一个新兴标准:http://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html

此模块可以帮助您使用Windows和Max OS X,但它似乎违反了XDG Base Dir Spec:http://pypi.python.org/pypi/appdirs