[英]Managing imports within a package
我對如何最好地管理以下情況感到困惑,其中 python 包中的多個模塊具有相同的依賴項。
假設我有一個包foo
其文件結構是
foo/
__init__.py
bar.py
baz.py
並且bar.py
和baz.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.