2010-10-21 73 views
0

我寫了一個工具,在幾個地方查找一個INI配置文件:在/usr/share,/usr/local/share,~/.local/share和當前目錄中。如何在virtualenv中使用ConfigParser?

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/。當virtualenv的路徑每次都會有所不同時,如何將此路徑添加到由ConfigParser搜索的路徑列表中?另外,如果我安裝到virtualenv,我還應該搜索系統/usr/share/usr/local/share目錄嗎?

回答

1

你應該能夠

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

包括/usr/share/usr/local/share將取決於您的應用程序,如果多個安裝由不同的用戶更有可能受益或受到全球機器受到傷害獲得VENV共享路徑設置。當使用系統python時,使用上面的代碼將包括'/usr/share/myconfig.conf',所以不明確包含它可能更安全。

+0

謝謝馬克,我認爲sys.prefix是一個很好的解決方案。 – 2010-10-21 19:18:48