在Python中重新加载整个包结构

在Python中重新加载整个包结构,python,import,package,reload,maya,Python,Import,Package,Reload,Maya,我在玛雅内部工作。我需要的是导入一个自定义包并完全重新加载它,包括所有子包和模块。主要是因为我想让Maya在我写作时自动完成模块路径。例如,我有这种包结构 root (package) subpackage1 (package) __init__.py (module) a.py (module) b.py (module) subpackage2 (package) c.py (module) d

我在玛雅内部工作。我需要的是导入一个自定义包并完全重新加载它,包括所有子包和模块。主要是因为我想让Maya在我写作时自动完成模块路径。例如,我有这种包结构

root (package)
    subpackage1 (package)
        __init__.py (module)
        a.py (module)
        b.py (module)

    subpackage2 (package)
        c.py (module)
        d.py (module)
        e.py (module)
我在\uuuu init\uuuuuuuy.py文件上所做的是导入所有子模块,然后逐个将它们重新加载到那里

ex:root.subpackage1.\uuuu init\uuuu.py

import a
import b
reload(a)
reload(b)
这非常繁琐,因此我认为有更好的方法导入和重新加载所有结构

root (package)
    subpackage1 (package)
        __init__.py (module)
        a.py (module)
        b.py (module)

    subpackage2 (package)
        c.py (module)
        d.py (module)
        e.py (module)
当我第一次导入包时,整个结构被加载到内存中

import root
reload(root)
root.subpackage1.a.my_function()
现在让我们假设我更新了一个.py文件并添加了一个名为my_test的函数。我需要再次重新加载所有包结构,以便能够像这样对其进行评估

root.subpackage1.a.my_test()
如果不这样做

from root.subpackage import a
reload(a)
a.my_test()
在导入和重新加载根目录时,我将所有要重新加载的内容设置为墙 这样做的最佳实践是什么?
提前感谢。

我找到的最接近的东西是直接基于对一个类似问题的回答()。我已经为您的问题的_init__uuuy.py文件引入了一些更改:

from os.path import dirname, basename, isfile
import glob

modules = glob.glob(dirname(__file__)+"/*.py")
__all__ = [ basename(f)[:-3] for f in modules if isfile(f) and not f.endswith('__init__.py')]

from . import *
for module in __all__:
    reload(module)

del dirname, basename, isfile, glob, modules

这有用吗?如果我没有正确理解您的问题,我深表歉意。

您可能需要阅读和。任何人都可以为我指出正确的方向吗?非常感谢,这是一种动态重新加载所有内容的好方法。