Python 3.5.1 kullanıyorum. Belgeyi ve paket bölümünü burada okudum: https://docs.python.org/3/tutorial/modules.html#packages
Şimdi, aşağıdaki yapıya sahibim:
/home/wujek/Playground/a/b/module.py
module.py
:
class Foo:
def __init__(self):
print('initializing Foo')
Şimdi ise /home/wujek/Playground
:
~/Playground $ python3
>>> import a.b.module
>>> a.b.module.Foo()
initializing Foo
<a.b.module.Foo object at 0x100a8f0b8>
Benzer şekilde, şimdi evde, süper klasör Playground
:
~ $ PYTHONPATH=Playground python3
>>> import a.b.module
>>> a.b.module.Foo()
initializing Foo
<a.b.module.Foo object at 0x10a5fee10>
Aslında her türlü şeyi yapabilirim:
~ $ PYTHONPATH=Playground python3
>>> import a
>>> import a.b
>>> import Playground.a.b
Bu neden işe yarıyor? Python yolu klasöre işaret ettiğinde __init__.py
hem de (hem boş olanları işe yarayacak) dosyaları olması gerekiyordu a
ve ithal b
için module.py
gerekli olsa Playground
?
Bu Python 2.7'den değişmiş gibi görünüyor:
~ $ 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
İle __init__.py
hem de ~/Playground/a
ve ~/Playground/a/b
o cezayı çalışır.