对不起,通用标题,一旦我了解了问题的根源,就会更改它 我有以下结构:
foo/
foo/__init__.py
foo/bar/
foo/bar/__init__.py
foo/bar/some_module.py
当我尝试导入 some_module 时:
from foo.bar import some_module
它就像一个魅力。 但这对我不利,因为我只知道要在运行时导入的模块的名称。所以如果我尝试:
from foo.bar import *
mod=__import__('some_module')
我得到一个错误。难道我做错了什么?有一个更好的方法吗?为什么会这样?
这是为什么呢?我不太确定我是否完全理解 python 包背后的概念。我认为它们等同于 java 的包,因此
请您参考如下方法:
我认为正确的做法是:
mod = __import__('foo.bar', fromlist = ['some_module'])
这样,即使“foo.bar”部分也可以在运行时更改。 因此 some_module 将作为 mod.some_module 可用;如果你想在一个单独的变量中使用 getattr:
the_module = getattr(mod, 'some_module')
