我有一个类似以下简化示例的项目层次结构:
├── pacOne
│ ├── __init__.py
│ └── pacTwo
│ ├── __init__.py
│ └── modTwo.py
└── main.py
在我的示例中,pacTwo
级别还有更多的包,我根据一个YAML文件加载这些包,其中的函数位于main.py
。它是一个函数,因为在实际的程序中,它能做的更多,我在这篇文章中排除了这一点。在
导入模块后,我无法确定如何访问modTwo
。它导入的很好,没有错误,但是一旦尝试访问它,我就得到错误消息,modTwo
不是pacTwo的属性。在
下面是我如何尝试访问modTwo
的示例:
globals()["pacOne." + module].modTwo.testFunc()
错误:
AttributeError: module 'pacOne.pacTwo' has no attribute 'modTwo'
所以问题是如何从main.py
访问{importlib
?或者这根本不可能,因为我不该这么做?在
编辑:
将导入函数更改为:
def loadModules(modules):
for module in modules:
moduleImport = importlib.import_module("pacOne." + module + ".modTwo")
globals()["pacOne." + module + ".modTwo"] = moduleImport
访问它就像:
globals()["pacOne." + module + ".modTwo"].testFunc()
结果:
AttributeError: module 'pacOne.pacTwo.modTwo' has no attribute 'testFunc'
这很奇怪,因为当我用inspect
来检查它时:
print(inspect.getmembers(moduleImport, inspect.isfunction))
我发现:
[('testFunc', <function testFunc at 0x7f5878df4d08>)]
我真的不知道该怎么解释。我只能假设我需要用不同的方式来称呼它,但我不知道怎么称呼它。在
目前没有回答
相关问题 更多 >
编程相关推荐