在Python中重新加载整个包结构
我在玛雅内部工作。我需要的是导入一个自定义包并完全重新加载它,包括所有子包和模块。主要是因为我想让Maya在我写作时自动完成模块路径。例如,我有这种包结构在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
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
这有用吗?如果我没有正确理解您的问题,我深表歉意。您可能需要阅读和。任何人都可以为我指出正确的方向吗?非常感谢,这是一种动态重新加载所有内容的好方法。