Python – параметры конфигурации, как вводить/обрабатывать?

StackOverflow https://stackoverflow.com/questions/1019850

Вопрос

Когда ваше приложение принимает несколько (~ 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.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top