Python 包 - 存储 Configuration/Settings
Python Package - Storing Configuration/Settings
我正在创建一个 python 包来与 Salesforce API 的各种组件进行交互(类似于 simple-salesforce,但具有更具可扩展性的架构,因此开发人员可以添加支持non-core Salesforce APIs.
过去,我要求用户创建一系列环境变量来存储他们的 salesforce 凭据,但我最近收到了一些请求,要求构建多组织支持并允许在 AWS 的秘密管理器中存储凭据而不是环境变量.
我正在测试一种新架构,我要求用户在包目录中编辑 config.py 并添加他们的 salesforce 组织的特定设置。这样,用户可以选择他们定义的组织数量,以及他们是否要使用环境变量或机密管理器等来存储凭据。
问题是,当我推送新版本并且用户通过 pip 升级包时,config.py 会随着更新被清除干净。是否有存储用户设置的最佳实践?我以前使用过 django 并设想了一个类似于 django 的 settings.py (source) 的基础设施,但只有在我构建我的包后才意识到 django 设置文件通常是在项目级别定义的,而不是包级别(我没有看到设置管理之外的巨大增值来为我的包采用类似的结构)。
有没有人找到其他成功的方法来管理设置或配置?
库配置最好存储在库源之外,在用户主目录下的 user-specific 配置文件夹下; Linux,这是 ~/.config
。您可以使用 appdirs 库为用户的 OS 确定项目的正确用户配置位置,然后让用户将配置文件放在您的库可以读取的位置。
我正在创建一个 python 包来与 Salesforce API 的各种组件进行交互(类似于 simple-salesforce,但具有更具可扩展性的架构,因此开发人员可以添加支持non-core Salesforce APIs.
过去,我要求用户创建一系列环境变量来存储他们的 salesforce 凭据,但我最近收到了一些请求,要求构建多组织支持并允许在 AWS 的秘密管理器中存储凭据而不是环境变量.
我正在测试一种新架构,我要求用户在包目录中编辑 config.py 并添加他们的 salesforce 组织的特定设置。这样,用户可以选择他们定义的组织数量,以及他们是否要使用环境变量或机密管理器等来存储凭据。
问题是,当我推送新版本并且用户通过 pip 升级包时,config.py 会随着更新被清除干净。是否有存储用户设置的最佳实践?我以前使用过 django 并设想了一个类似于 django 的 settings.py (source) 的基础设施,但只有在我构建我的包后才意识到 django 设置文件通常是在项目级别定义的,而不是包级别(我没有看到设置管理之外的巨大增值来为我的包采用类似的结构)。
有没有人找到其他成功的方法来管理设置或配置?
库配置最好存储在库源之外,在用户主目录下的 user-specific 配置文件夹下; Linux,这是 ~/.config
。您可以使用 appdirs 库为用户的 OS 确定项目的正确用户配置位置,然后让用户将配置文件放在您的库可以读取的位置。