Упаковочные приложения Python с конфигурационными файлами

Я использую ConfigParser для конфигурирования моего приложения, и теперь я хочу сделать это легко распространяемым, и в то же время сохранить конфигурируемость.

Я думаю, что мне нужны каталог с шаблонами конфигурационного файла и некоторый способ генерировать конфигурацию для фактического использования от них. Тогда мне нужно место для хранения его, который будет работать в virtualenv, пользовательский корневой каталог и т.д. Я хочу, чтобы это было как близко к тому, как нормальные пакеты Unix работают, т.е. имеют конфигурацию в и т.д., но с переопределениями в корневом каталоге. Существует ли готовое решение для этого, и в противном случае как что я должен вставить свой setup.py и т.д., чтобы заставить его работать, я хочу?

15
задан Joakim Lundborg 8 January 2010 в 10:24
поделиться

1 ответ

вы можете использовать опцию data_files в distutils для установки файлов в любом месте.

data_files определяет последовательность пар (каталог, файлы) следующим образом:

setup(...,
      data_files=[('/etc', ['cfg/config1.ini', 'cfg/config2.ini']),
                  ('/etc/init.d', ['bin/initscript1'])],
      ....
     )

При чтении файла конфигурации в вашем приложении вы можете объединить / home , если он существует, используя метод .read () для ConfigParser объектов :

files_read = cfgparserobj.read(['/etc/config1.ini', 
                                os.path.expanduser('~/.config1.ini')])
for fname in files_read:
    print "Reading config from", fname

Это будет читать /etc/config1.ini а затем перезаписать определения данными из .config1.ini в домашнем каталоге пользователя, если он существует.

11
ответ дан 1 December 2019 в 04:53
поделиться
Другие вопросы по тегам:

Похожие вопросы: