python和__import__的问题

ola*_*ndo 1 python import

对于通用标题很抱歉,一旦我理解了我的问题的根源就会改变它我有以下结构:

foo/
foo/__init__.py
foo/bar/
foo/bar/__init__.py
foo/bar/some_module.py
Run Code Online (Sandbox Code Playgroud)

当我尝试通过这样做导入some_module时:

from foo.bar import some_module
Run Code Online (Sandbox Code Playgroud)

它就像一个魅力.但这对我没有好处,因为我只知道要在运行时导入的模块的名称.所以,如果我尝试:

from foo.bar import *
mod=__import__('some_module')
Run Code Online (Sandbox Code Playgroud)

我收到一个错误.难道我做错了什么?有一个更好的方法吗?为什么会这样?

这是为什么?我不太确定我完全理解python包背后的概念.我认为它们等同于java的包,因此

kur*_*zak 7

我相信这样做的正确方法是:

mod = __import__('foo.bar', fromlist = ['some_module'])
Run Code Online (Sandbox Code Playgroud)

这样甚至'foo.bar'部分也可以在运行时更改.因此some_module将提供mod.some_module; 如果你想在一个单独的变量中使用getattr:

the_module = getattr(mod, 'some_module')
Run Code Online (Sandbox Code Playgroud)