簡體   English   中英

管理包內的導入

[英]Managing imports within a package

我對如何最好地管理以下情況感到困惑,其中 python 包中的多個模塊具有相同的依賴項。

假設我有一個包foo其文件結構是

foo/
    __init__.py
    bar.py
    baz.py

並且bar.pybaz.py都需要一些其他包,比如external_pkg ,以便他們閱讀

# foo/bar.py
import external_pkg
def bar_fn(x):
   # do something with external_pkg

# foo/baz.py
import external_pkg
def baz_fn(x):
   # do something with external_pkg

問題:有沒有辦法重構包,這樣我們就可以只在__init__.py包含import external_pkg行,而不是在模塊中重復寫入它? 天真地從模塊中刪除import external_pkg並將其放入__init__.py會導致NameError: name 'external_pkg' is not defined錯誤。

在上面的例子中,這顯然不是一個大問題,但我正在嘗試編寫一個小包,其中包含更多模塊和更多常見導入。 我知道這也可能只是我的包裝設計問題。 我試圖用谷歌搜索這個,但似乎無法找到正確的術語組合來獲得有用的答案。

foo/__init__.py:

import numpy as np

foo/bar.py:

from . import * # or from foo import *

print(np.zeros(10))

運行(需要在 foo 目錄之外才能工作):

$ python -m foo.bar

輸出:

[0. 0. 0. 0. 0. 0. 0. 0. 0. 0.]

暫無
暫無

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

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