我想通过以下方式动态导入模块:
我用这种结构创建了一个名为pkg的文件夹:
pkg
|__init__.py
|foo.py
Run Code Online (Sandbox Code Playgroud)
在头部__init__.py,添加此代码fragement:
pkgpath = os.path.dirname(pkg.__file__);
for module in pkgutil.iter_modules([pkgpath]):
__import__(module[1], locals(), globals());
m = sys.modules[module[1]];
print m.__package__;
Run Code Online (Sandbox Code Playgroud)
我发现m.__package__是None万一有在foo.py没有import语句,但如果我添加了一个简单的import语句是这样的:
import os
Run Code Online (Sandbox Code Playgroud)
那么m.__package__是"pkg"这是正确的包名.为什么会这样?
如何导入模块并确保其正确的包属性?