小编use*_*676的帖子

导入Python模块时__package__为None

我想通过以下方式动态导入模块:

我用这种结构创建了一个名为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"这是正确的包名.为什么会这样?

如何导入模块并确保其正确的包属性?

python load module dynamic

8
推荐指数
1
解决办法
4727
查看次数

标签 统计

dynamic ×1

load ×1

module ×1

python ×1