在 __init__.py 中重新加载由导入加载的子模块的最佳方法是什么?

问题描述 投票:0回答:0

我有一个包含多个模块的包,在

__init__.py
文件中,每个模块都有一个
from module import *
,这样模块中的所有函数都将存在于包命名空间级别。

我的问题是,当我在 jupyter notebook 中使用这个包并更改其中一个模块中的代码时,重新加载包不会重新加载这些模块。我让它工作的唯一方法是专门调用模块,如下所示,但这违背了在包命名空间级别拥有函数的目的。

我想做的是在包的

__init__.py
文件中放一些东西,这样当包被重新加载时它会导致模块被重新加载。有什么办法吗?

import package as pkg
from importlib import reload

# doesn't work
reload(pkg)
pkg.foo()

# does work but is cumbersome...
reload(pkg.module)
pkg.module.foo()

封装结构:

package/
   module1.py
   __init__.py
python python-packaging python-importlib
© www.soinside.com 2019 - 2024. All rights reserved.