Какой порядок считывания значений конфигурации?

Для программы python, которую я пишу, я хотел бы дать возможность настроить ее тремя способами. Переменные среды, файлы конфигурации и аргументы командной строки.

Логично, что аргументы командной строки всегда должны иметь наивысший приоритет. Я немного сомневаюсь, должны ли переменные среды иметь приоритет над файлами конфигурации? И будет ли вопрос, являются ли файлы конфигурации системными, конкретными пользователями или заданы в качестве аргумента в командной строке?

(Обратите внимание, что моя платформа - Unix/Linux)

Ответ 1

Стандарт, который я знаю, сначала ищет параметр командной строки, если не найдена среда var, а затем локальный файл конфигурации, а затем глобальный файл конфигурации.

Поэтому, когда пакет установлен где-то. Он будет иметь конфигурационный файл по умолчанию. Это можно изменить с помощью локального файла конфигурации. Который может быть переопределен параметром окружения, а параметр командной строки имеет самый высокий приоритет.

Если в командной строке объявлен конфигурационный файл, то его содержимое будет иметь приоритет над параметрами среды или любыми другими конфигурационными файлами. Но параметры командной строки будут иметь приоритет над ним. Но помните, что путь поиска все еще существует. Если пакет ищет var, он ищет.

Command line.
Config file thats name is declared on the command line.
Environment vars
Local config file (if exists)
Global config file (if exists)

Я думаю, что многие компиляторы командной строки и библиотека конфигурации Boost config работают аналогичным образом