मैं पायथन 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आयात योग्य होने के लिए जब करने के लिए पायथन पथ अंक Playgroundफ़ोल्डर?
ऐसा लगता है कि पायथन 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यह ठीक काम करता है।