Python: «импорт *» против execfile
В некоторых моих приложениях Django я используюsettings_local.py
файл для переопределения настроек, которые различны в разных средах (например, разработка, тестирование и производство). Первоначально я использовал следующий код, чтобы включить его содержимое вsettings.py
:
try:
from settings_local import *
except ImportError:
sys.stderr.write("The settings_local.py file is missing.\n")
DEBUG=False
Я недавно нашелexecfile
работать и переключаться на что-то вроде:
try:
execfile(path.join(PROJECT_ROOT, "settings_local.py"))
except IOError:
sys.stderr.write("The settings_local.py file is missing.\n"
DEBUG=False
Оба работают как задумано, но мне любопытно, пропускаю ли я какие-либо ошибки, и в целом, какой подход более рекомендуется и почему.