[英]python : imported packages with 'nested' modules
當我導入模塊時,這個嵌套場景工作正常。 但是當我嘗試導入包時,我得到了不一致的結果。 這是一個非常簡單的案例:
我當前文件夾的內容:
mypackages <directory>
__init__.py
one.py
two.py
three.py
這是腳本:
__init__.py :
import one
one.py :
import two
two.py :
import three
我期待我應該能夠通過這種方式訪問兩個和三個:
import mypackages
mypackages.one.two
mypackages.one.two.three
或者換句話說,邏輯級別應該是這樣的:
one
two
three
但是當我導入 mypackages 時,我將所有模塊都暴露在同一級別:
>>> import mypackages
>>> print dir(mypackages)
['__builtins__', '__doc__', '__file__', '__name__', '__package__',
'__path__', 'one', 'three', 'two']
它應該只顯示one
模塊,對嗎? 我很困惑為什么它顯示所有one , two
和three
,這意味着它們處於同一級別(我可以直接使用mypackages.two和mypackages.three )。
有沒有人有任何解釋?
你應該閱讀這個。
通過將文件放在同一級別,您將它們放在相同的包級別。 在您的情況下,您需要獲得此架構:
mypackage
├── __init__.py
├── one.py # contains "import two"
└── two
├── __init__.py
├── two.py # contains "import three"
└── three
├── __init__.py
└── three.py
然后,您可以通過以下方式訪問該包:
import mypackage.one
import mypackage.one.two
import mypackage.one.two.three
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.