Пакет Python - Сохранение конфигурации / настроек - PullRequest
0 голосов
/ 11 июня 2019

Я нахожусь в процессе создания пакета python для взаимодействия с различными компонентами API Salesforce (аналогично simple-salesforce, но с более масштабируемой архитектурой, поэтому разработчики могут добавить поддержку неосновных API Salesforce .

Раньше я требовал, чтобы пользователи создавали ряд переменных среды для хранения своих учетных данных Salesforce, но недавно я получил несколько запросов на создание поддержки нескольких организаций и разрешение хранения учетных данных в секретном менеджере AWS, а не переменных среды.

Я тестирую новую архитектуру, в которой я требую, чтобы пользователи отредактировали config.py в каталоге пакета и добавили специфические настройки своей организации продаж. Таким образом, пользователи могут выбирать, сколько организаций они определяют, и хотят ли они хранить учетные данные, используя переменные среды или диспетчер секретов и т. Д.

Проблема в том, что когда я запускаю новую версию и пользователи обновляют пакет через pip, файл config.py стирается вместе с обновлением. Есть ли лучшая практика для хранения пользовательских настроек? Я использовал django раньше и представлял инфраструктуру, похожую на django settings.py, но только после того, как я собрал свой пакет, я понял, что файл настроек django обычно определяется на уровне проекта, а не на уровне пакета (и я не увидеть огромную добавленную стоимость вне управления настройками, чтобы принять аналогичную структуру для моего пакета).

Кто-нибудь нашел альтернативные, успешные подходы к управлению настройками или конфигурациями?

1 Ответ

1 голос
/ 11 июня 2019

Конфигурация библиотеки лучше всего хранить вне источника библиотеки, в домашнем каталоге пользователя в пользовательской папке конфигурации;в Linux это ~/.config.Вы можете использовать библиотеку appdirs , чтобы определить правильное местоположение конфигурации пользователя для вашего проекта для ОС пользователя, а затем просто попросить пользователя поместить файл конфигурации в то место, где он читается вашей библиотекой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...