正在重新加载 Python 个包
Reloading Python Packages
主模块位于 runner 包中并执行其他包中的内容。主模块还可以 更新 其他包,当发生这种情况时,我想重新加载它们 为了获得添加到这些包的新 functions/modules .
项目结构
|--runner
|----main.py
|--core
|----module_1.py
|--configurations
|--utils
但这不起作用。
我尝试了以下命令:
- importlib.reload - 只重新加载一个模块,递归地使用它 sys.modules 没有将新模块添加到导入树中。示例:如果在更新后,“核心”接收到一个新模块“module_new.py”并且它在“module_1.py”中导入,它在重新加载后无法识别。
- 我尝试使用 IPython.lib.deepreload - 但效果不佳。
我已经被这个问题困扰了一段时间,但还没有找到任何有效的解决方案。
建议?谢谢
我通过使用来自外部执行脚本的 while 循环重新启动整个程序来解决这个问题。
退出代码 2:需要更新
Do
{
$process = Start-Process python -ArgumentList $CommandLine -verb RunAs -PassThru -WindowStyle Minimized -Wait
} WHILE ($process.ExitCode -eq 2)
如果模块不在 sys.modules
dict
中,将通过导入命令重新加载
# import some standard (non-updatable) modules
import numpy as np
# save set of non-reloadable modules on first run,
# and delete reloadable modules on other runs
if 'init_modules' not in globals():
init_modules = set(sys.modules.keys())
else:
modules = list(sys.modules.keys())
for m in modules:
if m not in init_modules:
del(sys.modules[m])
# import reloadable packages and modules
import MyPackage
主模块位于 runner 包中并执行其他包中的内容。主模块还可以 更新 其他包,当发生这种情况时,我想重新加载它们 为了获得添加到这些包的新 functions/modules .
项目结构
|--runner
|----main.py
|--core
|----module_1.py
|--configurations
|--utils
但这不起作用。
我尝试了以下命令:
- importlib.reload - 只重新加载一个模块,递归地使用它 sys.modules 没有将新模块添加到导入树中。示例:如果在更新后,“核心”接收到一个新模块“module_new.py”并且它在“module_1.py”中导入,它在重新加载后无法识别。
- 我尝试使用 IPython.lib.deepreload - 但效果不佳。
我已经被这个问题困扰了一段时间,但还没有找到任何有效的解决方案。 建议?谢谢
我通过使用来自外部执行脚本的 while 循环重新启动整个程序来解决这个问题。 退出代码 2:需要更新
Do
{
$process = Start-Process python -ArgumentList $CommandLine -verb RunAs -PassThru -WindowStyle Minimized -Wait
} WHILE ($process.ExitCode -eq 2)
如果模块不在 sys.modules
dict
# import some standard (non-updatable) modules
import numpy as np
# save set of non-reloadable modules on first run,
# and delete reloadable modules on other runs
if 'init_modules' not in globals():
init_modules = set(sys.modules.keys())
else:
modules = list(sys.modules.keys())
for m in modules:
if m not in init_modules:
del(sys.modules[m])
# import reloadable packages and modules
import MyPackage