我有以下项目结构:
python/
..core/
..envs/
..default/
....__init__
....default.py
..dev1/
....__init__
....dev1.py
dynamic_inventory.py
在dev1
我有以下内容:
from ..default.default import BaseInventory
在dynamic_inventory中:
import inspect
from envs.dev1 import dev1
print inspect.getmembers(dev1, inspect.isclass)
它给了我正确的代码:
> [('BaseInventory', <class 'envs.default.default.BaseInventory'>),
> ('BatchProcessor', <class 'envs.dev1.dev1.BatchProcessor'>), ...
但动态:
import inspect
sys.path.append("python/envs")
m = __import__("dev1")
print inspect.getmembers(m, inspect.isclass)
gives me: []
如何动态导入模块?
谢谢!
答案 0 :(得分:4)
您的代码存在两个问题。
首先,当您撰写<ion-segment [(ngModel)]="activeWeekNumber" (ngModelChange)="doSomething($event) (click)="weekFilter()"
时,您要从from envs.dev1 import dev1
包中导入dev1
。但是使用envs.dev1
,您将其作为独立模块导入。
其次:使用__import__("dev1")
导入sys.path.append("python/envs"); __import__("dev1")
,因为python/envs/dev1/__init__.py
目录包含python/envs
目录。但是你想要dev1
文件。这就是为什么你得到一个空列表:你的python/envs/dev1/dev1.py
没有定义任何类。
把所有东西放在一起:
__init__.py