【发布时间】:2020-06-09 20:59:55
【问题描述】:
我有一个名为 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)
【问题讨论】:
-
要求用户将 API 密钥存储在环境变量中,而不是通过命令行参数传递它。从安全的角度来看,这也比将其存储在磁盘上的任何位置更可取。
-
谢谢@ksbg 我已经有了这个选项。我只是想一定有一种方法可以为他们存储它?
-
用户主目录可能是您最好的选择,例如
.mypkg/.api。import os print(os.path.expanduser('~')) -
我没有看到将 api 值存储在环境变量中的任何优势,事实上恰恰相反。
-
我同意@PedroLobito 的观点,即本地隐藏文件是一个很好的第一次剪切,但请确保仅由您的用户将其设为 RW。只需在 linux 机器上执行
ls -l ~/.ssh,您可能会在那里看到您的私有 ssh 密钥。如果这把用户吓坏了(我吓坏了),那么需要 selinux 或 apparmour 或其他一些操作系统级别的保护。
标签: python setup.py pypi python-packaging