在 Python 中是否有一个标准的位置来存储函数缓存文件?
Is there a standard location to store function cache files in Python?
我有这些执行大量昂贵计算的脚本。我所做的一项优化是评估网格上的昂贵函数、缓存网格并在网格内对调用进行插值。重要的是将文件写出到磁盘,以便将来的会话可以从缓存中受益。当此脚本仅供我个人使用时,我可以将缓存放在任何地方。现在我想将它合并到一个包中以便更广泛地分发,我发现我需要有一些方法来知道在哪里存储包的缓存文件是正确的?我是否只需要做出一些决定,或者是否有一些我应该遵循的程序(例如,让用户在安装时、运行 时等修改目录)?
编辑:此代码还将具有基于其他来源的插值数据的功能。所以我也需要一个地方来存储这些,但需要知道这样做的标准位置以及如何检测特定安装的位置(在安装时硬编码的东西,或者 Python 模块在 运行 时间检测它们的安装位置?)。重点是,这个位置需要以我理解的临时目录不是的方式持久存在。因此,理想情况下,这将在包的目录结构内或用户主目录中的某处完成。如果在包的目录中,如果我必须做一些有权限的恶作剧来制作一个用户可以修改的目录,这是可以接受的。
我会考虑创建一个带有您的脚本可以识别的前缀的 named temporary file,以便该文件可以在以后的会话中重新打开。文件创建看起来像:
tempfile.NamedTemporaryFile(prefix='myApp', delete=False)
否则,我将默认为当前工作目录并提供一个选项以在 运行 时使用 argparse.
设置文件夹
我也有同样的要求
似乎要存储到 ~/.cache/<appname>
(Linux)。
为了覆盖不同的操作系统,可以使用appdirs来简化获取相似位置的过程,例如:
from appdirs import user_cache_dir
cachedir = user_cache_dir("<app name>")
我在这里找到了一些缓存文件
C:\Users\User_Name\AppData\Local\pip\cache
这是安装 pip 和缓存 files/libraries 的文件夹。
如果您卸载并重新安装 python,那么将使用这些缓存的库,而不是下载新的。
我有这些执行大量昂贵计算的脚本。我所做的一项优化是评估网格上的昂贵函数、缓存网格并在网格内对调用进行插值。重要的是将文件写出到磁盘,以便将来的会话可以从缓存中受益。当此脚本仅供我个人使用时,我可以将缓存放在任何地方。现在我想将它合并到一个包中以便更广泛地分发,我发现我需要有一些方法来知道在哪里存储包的缓存文件是正确的?我是否只需要做出一些决定,或者是否有一些我应该遵循的程序(例如,让用户在安装时、运行 时等修改目录)?
编辑:此代码还将具有基于其他来源的插值数据的功能。所以我也需要一个地方来存储这些,但需要知道这样做的标准位置以及如何检测特定安装的位置(在安装时硬编码的东西,或者 Python 模块在 运行 时间检测它们的安装位置?)。重点是,这个位置需要以我理解的临时目录不是的方式持久存在。因此,理想情况下,这将在包的目录结构内或用户主目录中的某处完成。如果在包的目录中,如果我必须做一些有权限的恶作剧来制作一个用户可以修改的目录,这是可以接受的。
我会考虑创建一个带有您的脚本可以识别的前缀的 named temporary file,以便该文件可以在以后的会话中重新打开。文件创建看起来像:
tempfile.NamedTemporaryFile(prefix='myApp', delete=False)
否则,我将默认为当前工作目录并提供一个选项以在 运行 时使用 argparse.
设置文件夹我也有同样的要求
似乎要存储到 ~/.cache/<appname>
(Linux)。
为了覆盖不同的操作系统,可以使用appdirs来简化获取相似位置的过程,例如:
from appdirs import user_cache_dir
cachedir = user_cache_dir("<app name>")
我在这里找到了一些缓存文件 C:\Users\User_Name\AppData\Local\pip\cache
这是安装 pip 和缓存 files/libraries 的文件夹。
如果您卸载并重新安装 python,那么将使用这些缓存的库,而不是下载新的。