I am using Python 3.5.1. I read the
document and the package section here: href="https://docs.python.org/3/tutorial/modules.html#packages">https://docs.python.org/3/tutorial/modules.html#packages
Now,
I have the following
structure:
/home/wujek/Playground/a/b/module.py
module.py
:
class
Foo:
def __init__(self):
print('initializing
Foo')
Now, while in
/home/wujek/Playground
:
~/Playground
$ python3
>>> import a.b.module
>>>
a.b.module.Foo()
initializing Foo
0x100a8f0b8>
Similarly,
now in home, superfolder of
Playground
:
~
$ PYTHONPATH=Playground python3
>>> import
a.b.module
>>> a.b.module.Foo()
initializing
Foo
0x10a5fee10>
Actually,
I can do all kinds of stuff:
~ $
PYTHONPATH=Playground python3
>>> import a
>>>
import a.b
>>> import
Playground.a.b
Why
does this work? I though there needed to be __init__.py
files
(empty ones would work) in both a
and
b
for module.py
to be importable when
the Python path points to the Playground
folder?
This seems to have changed from 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
With
__init__.py
in both ~/Playground/a
and
~/Playground/a/b
it works fine.
No comments:
Post a Comment