如何在动态加载的模块中静态导入模块

时间:2017-06-28 21:51:58

标签: python import dynamically-generated

我正在为我的应用动态加载过滤器。现在我希望能够扩展现有的过滤器:

在我的Main.py中我做了:

spec = importlib.util.spec_from_file_location(filter, file)
inst = importlib.util.module_from_spec(spec)
spec.loader.exec_module(inst)

我有一个名为varianceFilter.py的文件加载并运行良好:

varianceFilter.py:

def run(images):
    #do something
    return result

现在我想像这样重用和扩展这个过滤器:

testFilter.py:

import varianceFilter as vf

def run(images):
    ret = vf.run(images)
    #do something with ret 
    return ret

但是,只要我尝试导入varianceFilter.py异常

No module named 'varianceFilter'

被抛出。两个文件都在同一目录中。 我做错了什么?

编辑:

我的目录结构是:

main.py 
filters/varianceFilter.py
filters/testFilter.py

在主目录中创建varianceFilter的副本后,testFilter.py工作正常。

1 个答案:

答案 0 :(得分:0)

添加空文件

filters/__init__.py

并将testFilter.py中的import语句更改为

import filters.varianceFilter as vf 

修复了问题。

相关问题