【问题标题】:Reloading Python Packages重新加载 Python 包
【发布时间】:2021-01-05 16:29:02
【问题描述】:

主模块位于 runner 包中并执行其他包中的内容。主模块还可以更新其他包,当这种情况发生时,我想重新加载它们以获取添加到这些包中的新功能/模块。。 p>

项目结构

|--runner
|----main.py
|--core
|----module_1.py
|--configurations
|--utils

但这不起作用。

我尝试了以下命令:

  1. importlib.reload - 仅重新加载单个模块,递归使用 sys.modules 不会将新模块添加到导入树中。示例:如果在更新后,“core”收到了一个新模块“module_new.py”并将其导入“module_1.py”,则重新加载后无法识别。
  2. 我尝试使用 IPython.lib.deepreload - 效果不佳。

我已经被这个问题困扰了一段时间,还没有找到任何可行的解决方案。 建议?谢谢

【问题讨论】:

  • 你能添加你尝试过的代码吗?
  • 不幸的是,代码是受保护的,所以我不能分享它,但我写的例子是一个真实的案例。我更新了其中一个包(在已经运行并从内部使用模块之后),现在该包具有无法识别/加载的新模块。

标签: python python-3.x module package reload


【解决方案1】:

我通过使用外部执行脚本中的 while 循环重新启动整个程序来解决此问题。 退出代码 2:需要更新

    Do
    {
        $process = Start-Process python -ArgumentList $CommandLine -verb RunAs -PassThru -WindowStyle Minimized -Wait
    } WHILE ($process.ExitCode -eq 2)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-12-03
    • 2017-03-14
    • 1970-01-01
    • 1970-01-01
    • 2018-08-29
    • 2015-10-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多