Сделать виртуальный пакет доступным через sys.modules
Скажем, у меня есть пакет "mylibrary".
Я хочу сделать «mylibrary.config» доступным для импорта, либо как динамически создаваемый модуль, либо как модуль, импортированный из совершенно другого места, которое затем будет «подключено» внутри пространства имен «mylibrary».
То есть я делаю:
import sys, types
sys.modules['mylibrary.config'] = types.ModuleType('config')
Учитывая эту настройку:
>>> import mylibrary.config # -> works
>>> from mylibrary import config
<type 'exceptions.ImportError'>: cannot import name config
Даже незнакомец
>>> import mylibrary.config as X
<type 'exceptions.ImportError'>: cannot import name config
Таким образом, кажется, что использование прямого импорта работает, а другие формы - нет. Можно ли заставить их работать?