На самом деле вы, вероятно, будете иметь ту же ошибку, даже если это был не дикий импорт (т. Е. Импорт settings / settings.MY_VARIABLE все равно будет отображать ошибку, потому что анализ кода не сможет ее найти).
Помимо @UndefinedVariable
в каждом месте, которое ссылается на него ( CTRL + 1 покажет эту опцию), я думаю, что лучшим шаблоном для вашего модуля будет:
MY_VARIABLE = 'default value'
...
update_default_values() # Go on and override the defaults.
Таким образом, анализ кода (и любой читающий ваш модуль) будет знать, какие переменные ожидаются.
В противном случае, если вы не знаете их раньше, я думаю, что лучшим подходом будет использование метода (т. Е. get_settings('MY_VARIABLE')
).
Не имеет отношения к актуальной проблеме. Я бы действительно советовал не использовать здесь дикий импорт (и даже не импортировать константу ... т.е. 1016 *).
Лучшим подходом для модуля настроек всегда является использование:
import settings
settings.MY_VARIABLE
(потому что в противном случае, если какое-либо место решит, что хочет изменить MY_VARIABLE, любое место, которое поместило ссылку в свое собственное пространство имен, вероятно, никогда не получит измененную переменную).
Еще более безопасный подход - использовать метод get_setting('var')
, поскольку он позволит вам более лениво загружать ваши предпочтения (то есть: не загружать при импорте, но когда он вызывается в первый раз).