簡體   English   中英

如何導入子包?

[英]How can I import subpackage?

我有這樣的文件結構:

test.py
Dir1\
  __init__.py
  Something.py
  Dir2\
    __init__.py
    Something2.py
#Dir1.__init__.py
from .Something import *

Dir2.__init__.py具有相同的代碼,但帶有.Something2

Something.py 有簡單的 add 方法,Something2.py 有簡單的 sub 方法。

我需要的:

#test.py
import Dir1
print(Dir1.Dir2.sub(10, 14))

但我得到一個錯誤AttributeError: module 'Dir1' has no attribute 'Dir2'

如果我在test.py中的Dir1.__init__.py代碼中使用from.Dir2 import *可以工作,但print(Dir1.sub(10, 14))也可以工作,這是我不想要的。 我嘗試了許多變體,但它們給我帶來了錯誤或Dir1.sub工作。

這可能可以在互聯網上找到,但是我的英語知識很糟糕,我可能會錯過答案。 當然,我已經嘗試在 Internet 上搜索它。

我將非常感謝您的回答。

# test.py
import Dir1.Dir2
print(Dir1.Dir2.sub(10,14))

應該管用。 此外,如果您需要,您可以在導入時使用as關鍵字重命名模塊

import some_module as new_name

可能是拐杖,但我找到了解決辦法。 現在我有了這個文件結構:

test.py
Dir1\
  __init__.py
  Dir1\
    __init__.py
    Something.py
    Dir2\
      __init__.py
      Something2.py
#Dir1.__init__
import Dir1 as Add
from .Dir1 import Dir2 as Sub

現在我可以使用

#test.py
import Dir1
print(Dir1.Sub.sub(10, 7))

並且不能使用

#test.py
import Dir1
print(Dir1.sub(10, 7))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM