Основная проблема заключается в том, что я занимаюсь разработкой некоторые Django, но на более чем одного хоста (с коллегами), все с разными настройками. Я надеялся, что сделать что-то подобное в проекте/settings.py файл:
from platform import node
settings_files = { 'BMH.lan': 'settings_bmh.py", ... }
__import__(settings_files[ node() ])
казался простым решением (при этом элегантный), но я согласен, что он имеет запах к нему и простота выходит цикл, когда вы должны использовать логику, как то, что написал Джон Милликин (спасибо). Вот, по существу, решение, с которым я столкнулся:
from platform import node
from settings_global import *
n = node()
if n == 'BMH.lan':
from settings_bmh import *
# add your own, here...
else:
raise Exception("No host settings for '%s'. See settings.py." % node())
Что подходит для наших целей.
может быть лучше: для ATTR в м .__ all__ ? – 2008-09-29 04:47:34
@Sergei: нет гарантии, что модули определит __all__ – 2008-09-29 04:55:13
@ Джон Милликин: Но если модуль определяет __all__, вы должны его заметить – 2008-09-29 06:56:50