Python – параметры конфигурации, как вводить/обрабатывать?
-
06-07-2019 - |
Вопрос
Когда ваше приложение принимает несколько (~ 5) параметров конфигурации, и приложение будет использоваться пользователями нетехнологий (т.е. ЦЕЛОВАТЬ), как вы обычно обрабатываете параметры конфигурации чтения, а затем передают параметры между объектами/функциями (несколько модулей)?
Примеры вариантов:входные и выходные каталоги/имена файлов, уровень детализации.
Я обычно использую optparse
(Python) и передайте варианты/параметры в качестве аргументов;Но мне интересно, чаще ли это использовать текстовый файл конфигурации, который читается непосредственно всеми модулями «объектами» (но тогда, разве это не похоже на «глобальные» переменные?, И никто не «владеет» государством?) Полем
Другая типичная проблема — модульное тестирование;Если я хочу самостоятельно проверить каждый единственный модуль, для конкретного модуля может потребоваться только 1 из 5 параметров конфигурации;Как вы обычно отделяете отдельные модули/объекты от остальной части приложения, и все же позволяете ему принять 1 или 2 необходимые параметры (ли платформу тестирования модуля каким -то образом вызывают или принимают функции конфигурации)?
Я предполагаю, что нет уникального правильного способа сделать это, но было бы интересно прочитать о различных подходах или известных закономерности.
Решение 2
"Counts answer"
Please update these counts and feel free to add/modify.
Do you usually read config options via:
- command-line/gui options : 1
- a config text file : 0
How do multiple modules/objects have access to these options?
- they receive them from the caller as an argument: 1
- read them directly from the config text file: 0
When doing unit-testing of a single module (NOT the "main" module)
and the module uses one option, e.g. input filename:
- unit-test framework provides own "simplified" config functionality: 0
- unit-test framework invokes main app's config functionality: 1
Do you use:
- optparse: 1
- getopt: 0
- others?
Please list any config management "design pattern"
(usable in Python) and add a count if you use it - thanks.
-
-
Другие советы
Вы обычно читаете параметры конфигурации через:- Параметры командной строки/графического интерфейса - текстовый файл конфигурации
Оба.Мы используем настройки Django.py и logging.ini.Мы также используем параметры и аргументы командной строки для параметров, которые изменяются наиболее часто.
Как несколько модулей/объектов имеют доступ к этим параметрам?
- настройки.py;logging.ini — не могу сказать.
- Наши параметры являются частными для основной программы и используются для создания
аргументы функций или инициализаторы объектов.
[Совместное использование опций optparse — это большая головная боль и излишне связывает множество вещей в непроверяемый беспорядок.]
При модульном тестировании одного модуля (НЕ «основного» модуля):(например.опция чтения, указывающая имя входного файла)
[Я не могу разобрать вопрос.Я предполагаю, что это «как вы проверяете, когда есть варианты?»]
Ответ таков: мы этого не делаем.Поскольку только основной метод анализирует параметры командной строки, ни один другой модуль, функция или класс не имеет ни малейшего представления об опциях командной строки.Нет этого модуля «требуется 1 из 5 вариантов конфигурации». Классы (или функции) модуля имеют обычные аргументы и все.
Мы используем только optparse
.