【问题标题】:Python Package - Storing Configuration/SettingsPython 包 - 存储配置/设置
【发布时间】: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 设置文件通常是在项目级别而不是包级别定义的(我没有看到设置管理之外的巨大附加值,为我的包采用类似的结构。

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

【问题讨论】:

  • 包目录应该包含你的东西,而不是用户的。你不要在你的安装脚本中弄乱用户的东西,这是粗鲁的。

标签: python python-packaging


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-09-04
    • 1970-01-01
    • 1970-01-01
    • 2017-07-11
    • 2011-01-06
    • 1970-01-01
    • 2018-11-04
    相关资源
    最近更新 更多