Python软件包-存储配置/设置

时间:2019-06-11 20:35:11

标签: python python-packaging

我正在创建一个python包以与Salesforce API的各个组件进行交互(类似于simple-salesforce,但具有更可扩展的体系结构,以便开发人员可以添加对non-core Salesforce APIs的支持。)

过去,我要求用户创建一系列环境变量来存储其Salesforce凭证,但是最近我收到了一些请求,以建立多组织支持,并允许凭证存储在AWS的Secret Manager中,而不是环境变量中。 / p>

我正在测试一种新的体系结构,其中要求用户在package目录中编辑config.py并添加其salesforce org的特定设置。这样,用户可以选择定义的组织数量,以及是否要使用环境变量或机密管理器等存储凭据。

问题是,当我推送一个新版本并且用户通过pip升级软件包时,config.py将被更新清除。是否有存储用户设置的最佳实践?我以前使用过django并预想了类似于django的settings.py的基础架构,但是只有在构建我的软件包后才意识到django设置文件通常是在项目级别而不是在软件包级别定义的(并且我没有在设置管理之外看到了巨大的增值,从而为我的程序包采用了类似的结构。

有人找到管理设置或配置的成功替代方法吗?

1 个答案:

答案 0 :(得分:1)

最好将库配置存储在库源之外,位于用户特定配置文件夹下用户的主目录中;在Linux上,这是~/.config。您可以使用appdirs库来为您的项目确定适合用户操作系统的正确用户配置位置,然后让用户将配置文件放在库可以读取的位置。