Итак, я пытаюсь импортировать модуль "foo", который содержит каталоги "bar" и "wiz". «bar» содержит файлы Python a.py, b.py и c.py. «wiz» содержит файлы Python x.py, y.py и z.py.
$ ls foo
__init__.py bar wiz
$ ls foo/bar
__init__.py a.py b.py c.py
$ ls foo/wiz
__init__.py x.py y.py z.py
В оболочке python (точнее, в оболочке django manage.py), я набираю следующую строку и вижу следующие результаты:
>>> import foo
>>> dir(foo.bar)
['__builtins__', '__doc__', '__file__', '__name__', '__path__', 'a']
>>> dir(foo.wiz)
['__builtins__', '__doc__', '__file__', '__name__', '__path__', 'x', 'y']
>>> foo.wiz.x
<module 'foo.wiz.x' from '/dir/'>
>>> foo.wiz.z
Traceback (most recent call last):
File "<console>", line 1, in <module>
AttributeError: 'module' object has no attribute 'z'
Почему сюда импортируются только определенные модули? Почему я не могу получить доступ к z или b или c? Я думал, что все будет импортировано и доступно только на основе каталога, в котором они находятся. Кроме того, в случае сбоя импорта происходит сбой в автоматическом режиме.
Кто-нибудь знает, что здесь происходит?