Возьмем следующий пример кода:
Файл package1/__init__.py:
from moduleB import foo
print moduleB.__name__
Файл package1/moduleB.py:
def foo(): pass
Затем из текущего каталога:
>>> import package1
package1.moduleB
Этот код работает в CPython. Меня удивляет, что оператор from ... import in __init__.py делает имя moduleB видимым. Согласно документации Python, это не должно быть:
Форма from не связывает имя модуля
Может кто-нибудь объяснить, почему CPython работает именно так? Есть ли какая-либо документация, описывающая это подробно?