Saya menggunakan Python 3.5.1. Saya membaca dokumen dan bagian paket di sini: https://docs.python.org/3/tutorial/modules.html#packages
Sekarang, saya memiliki struktur berikut:
/home/wujek/Playground/a/b/module.py
module.py
:
class Foo:
def __init__(self):
print('initializing Foo')
Sekarang, saat berada di /home/wujek/Playground
:
~/Playground $ python3
>>> import a.b.module
>>> a.b.module.Foo()
initializing Foo
<a.b.module.Foo object at 0x100a8f0b8>
Demikian pula, sekarang di rumah, superfolder dari Playground
:
~ $ PYTHONPATH=Playground python3
>>> import a.b.module
>>> a.b.module.Foo()
initializing Foo
<a.b.module.Foo object at 0x10a5fee10>
Sebenarnya, saya bisa melakukan segala macam hal:
~ $ PYTHONPATH=Playground python3
>>> import a
>>> import a.b
>>> import Playground.a.b
Mengapa ini bekerja? Saya __init__.py
pikir perlu ada file (yang kosong akan bekerja) di keduanya a
dan b
untuk module.py
dapat diimpor ketika jalur Python menunjuk ke Playground
folder?
Ini tampaknya telah berubah dari 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
Dengan __init__.py
keduanya ~/Playground/a
dan ~/Playground/a/b
itu berfungsi dengan baik.