如何为PYPI包提供持久存储



我有一个名为collectiondbf的pypi包,它通过用户输入的API密钥连接到API。它在目录中用于下载如下文件:

python -m collectiondbf [myargumentshere..]

我知道这应该是基础知识,但我真的被这个问题卡住了:

如何以有意义的方式保存用户给我的密钥,使他们不必每次都输入密钥

我想使用以下使用config.json文件的解决方案,但如果我的包将移动目录,我如何知道该文件的位置?

以下是我想使用它的方式,但显然它不起作用,因为工作目录会更改

import json
if user_inputed_keys:
with open('config.json', 'w') as f:
json.dump({'api_key': api_key}, f)

大多数常见的操作系统都有一个应用程序目录的概念,该目录属于在系统上拥有帐户的每个用户。该目录允许所述用户创建和读取例如配置文件和设置。

因此,您所需要做的就是列出您想要支持的所有发行版,找出它们喜欢将用户应用程序文件放在哪里,并使用一个大的旧if..elif..else链来打开相应的目录。


或者使用appdirs,它已经做到了:

from pathlib import Path
import json
import appdirs
CONFIG_DIR = Path(appdirs.user_config_dir(appname='collectiondbf'))  # magic
CONFIG_DIR.mkdir(parents=True, exist_ok=True)
config = CONFIG_DIR / 'config.json'
if not config.exists():
with config.open('w') as f:
json.dumps(get_key_from_user(), f)
with config.open('r') as f:
keys = json.load(f)  # now 'keys' can safely be imported from this module

相关内容

  • 没有找到相关文章

最新更新