मैं पायथन 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
यह ठीक काम करता है।