2010-10-21 4 views
0

J'ai écrit un outil qui cherche à plusieurs endroits un fichier de configuration INI: en /usr/share, /usr/local/share, ~/.local/share, et dans le répertoire courant.Comment utiliser ConfigParser avec virtualenv?

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 

J'ai commencé à utiliser virtualenv et maintenant mon script setup.py installe myconfig.conf dans /path/to/virtual/env/share/. Comment puis-je ajouter ce chemin à la liste des chemins recherchés par ConfigParser lorsque le chemin vers virtualenv sera différent à chaque fois? En outre, si je suis installé sur un virtualenv, devrais-je toujours rechercher les répertoires du système /usr/share et /usr/local/share?

Répondre

1

Vous devriez être en mesure d'obtenir le chemin de partage de venv avec

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

Y compris /usr/share ou /usr/local/share dépendra de votre application et si plusieurs installations par différents utilisateurs seraient plus susceptibles de bénéficier ou être lésés par la machine mondiale paramètres. L'utilisation du code ci-dessus inclurait '/usr/share/myconfig.conf' lors de l'utilisation du système python, il est donc probablement plus sûr de ne pas l'inclure explicitement.

+0

Merci Marc, je pense que sys.prefix est une bonne solution. –