El problema de fondo es que estoy desarrollando algunos de Django, pero en más de un host (con colegas), todos ellos con diferentes configuraciones. Tenía la esperanza de hacer algo como esto en el archivo de proyecto/settings.py:
from platform import node
settings_files = { 'BMH.lan': 'settings_bmh.py", ... }
__import__(settings_files[ node() ])
ha parecido una solución simple (por lo tanto elegante), pero estoy de acuerdo que tiene un olor a ella y la sencillez va fuera el ciclo cuando tienes que usar la lógica como lo que publicó John Millikin (gracias). Aquí está esencialmente la solución que fui con:
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())
Lo que funciona bien para nuestros propósitos.
quizás mejor: para attr en m .__ all__ ? –
@Sergei: no hay garantía de que los módulos definan __all__ –
@John Millikin: Pero si un módulo define __all__ debe observarlo –