Skip to main content
 首页 » 编程设计

python之python 和 __import__ 的问题

2025年05月04日12zdz8207

对不起,通用标题,一旦我了解了问题的根源,就会更改它 我有以下结构:

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')