Я використовую Python 3.5.1. Я читав документ і розділ пакета тут: https://docs.python.org/3/tutorial/modules.html#packages
Тепер у мене є така структура:
/home/wujek/Playground/a/b/module.py
module.py:
class Foo:
def __init__(self):
print('initializing Foo')
Зараз, перебуваючи в /home/wujek/Playground:
~/Playground $ python3
>>> import a.b.module
>>> a.b.module.Foo()
initializing Foo
<a.b.module.Foo object at 0x100a8f0b8>
Аналогічно, зараз удома, суперпапка Playground:
~ $ PYTHONPATH=Playground python3
>>> import a.b.module
>>> a.b.module.Foo()
initializing Foo
<a.b.module.Foo object at 0x10a5fee10>
Насправді я можу робити всілякі речі:
~ $ PYTHONPATH=Playground python3
>>> import a
>>> import a.b
>>> import Playground.a.b
Чому це працює? Я хоч повинні були бути __init__.pyфайли (порожні працюватимуть) і в, aі bдля того, module.pyщоб вони були важливими, коли шлях Python вказує на Playgroundпапку?
Здається, це змінилося з Python 2.7:
~ $ PYTHONPATH=Playground python
>>> import a
ImportError: No module named a
>>> import a.b
ImportError: No module named a.b
>>> import a.b.module
ImportError: No module named a.b.module
І __init__.pyв обох, ~/Playground/aі ~/Playground/a/bце чудово працює.