Le problème sous-jacent est que je développe un certain Django, mais plus d'un hôte (avec des collègues), tous avec des paramètres différents. J'espérais faire quelque chose comme ça dans le fichier de projet/settings.py:
from platform import node
settings_files = { 'BMH.lan': 'settings_bmh.py", ... }
__import__(settings_files[ node() ])
Il semblait une solution simple (donc élégante), mais je suis d'accord qu'il a une odeur et la simplicité se éteint la boucle quand vous devez utiliser la logique comme ce que John Millikin a posté (merci). Voici essentiellement la solution que je suis allé avec:
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())
Qui fonctionne bien pour nos besoins.
peut-être mieux: pour attr en m .__ all__ ? –
@Sergei: il n'y a aucune garantie que les modules vont définir __all__ –
@John Millikin: Mais si un module définit __all__, vous devez l'observer –