【发布时间】:2019-10-26 07:50:27
【问题描述】:
我正在创建一个 python 包以与 Salesforce API 的各种组件交互(类似于 simple-salesforce,但具有更可扩展的架构,因此开发人员可以添加对non-core Salesforce APIs 的支持。
过去,我要求用户创建一系列环境变量来存储他们的销售人员凭证,但最近我收到了一些请求,要求构建多组织支持并允许在 AWS 的密钥管理器而不是环境变量中存储凭证。
我正在测试一种新架构,其中我要求用户编辑包目录中的 config.py 并添加他们的 salesforce 组织的特定设置。这样,用户可以选择他们定义的组织数量,以及是否要使用环境变量或机密管理器等来存储凭据。
问题是,当我推送新版本并且用户通过 pip 升级软件包时,config.py 会被更新清除干净。是否有存储用户设置的最佳实践?我以前使用过 django 并设想了一个类似于 django 的 settings.py 的基础架构,但只有在我构建了我的包之后才意识到 django 设置文件通常是在项目级别而不是包级别定义的(我没有看到设置管理之外的巨大附加值,为我的包采用类似的结构。
有没有人找到替代的、成功的方法来管理设置或配置?
【问题讨论】:
-
包目录应该包含你的东西,而不是用户的。你不要在你的安装脚本中弄乱用户的东西,这是粗鲁的。