Как использовать ConfigParser с virtualenv?

Я написал инструмент, который ищет файл конфигурации INI в нескольких местах: в /usr/share, /usr/local/share, ~/.local/share и в текущем каталоге.

c = ConfigParser.RawConfigParser()
filenames = ['/usr/share/myconfig.conf',
             '/usr/local/share/myconfig.conf',
             os.path.expanduser('~/.local/share/myconfig.conf'),
             os.path.expanduser('./myconfig.conf')]
parsed_names = c.read(filenames)
for name in parsed_names:
    print 'using configuration file: ' + name

Я начал использовать virtualenv, и теперь мой скрипт setup.py устанавливает myconfig.conf в /path/to/virtual/env/share/. Как я могу добавить этот путь в список путей, которые ищет ConfigParser, когда путь к virtualenv каждый раз будет другим? Кроме того, если я установил в virtualenv, должен ли я по-прежнему искать системные каталоги /usr/share и /usr/local/share?


person Nathan Farrington    schedule 21.10.2010    source источник


Ответы (1)


Вы должны иметь возможность получить общий путь venv с помощью

os.path.join(sys.prefix, 'share', 'myconfig.conf')

Включение /usr/share или /usr/local/share будет зависеть от вашего приложения и от того, будут ли множественные установки разными пользователями с большей вероятностью приносить пользу или вред от глобальных настроек компьютера. Использование приведенного выше кода будет включать '/usr/share/myconfig.conf' при использовании системного python, поэтому, вероятно, безопаснее не включать его явно.

person Marc    schedule 21.10.2010