Возьмем следующий пример кода:
Файл 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 работает именно так? Есть ли какая-либо документация, описывающая это подробно?