我正在使用烧瓶并具有以下结构
<root>
manage_server.py
cas <directory>
--- __init__.py
--- routes.py
--- models.py
--- templates <directory>
--- static <directory>
--- formmodules <directory>
------ __init__.py
------ BaseFormModule.py
------ Interview.py
在routes.py中,我正在尝试在Interview模块中创建Interview类的实例,就像这样
my_module = "Interview"
module = importlib.import_module('formmodules."+my_module)
我在这里收到错误
ImportError: No module named formmodules.Interview
有关init文件的一些信息:
/cas/formmodules/__init__.py is empty
/cas/__init__.py is where I initialize my flask app.
请告诉我们知道这些文件的内容是否有帮助。
答案 0 :(得分:5)
这是经典的相对与绝对导入问题之一。
formmodules
仅相对于cas
存在,但import_module
执行绝对导入(与from __future__ import absolute_imports
一样)。由于无法通过formmodules
找到sys.path
,导入失败。
解决此问题的一种方法是使用relative import。
如果以相对术语指定名称,则必须将package参数指定给作为解析包名称的锚点的包。
您可能想尝试:
module = importlib.import_module('.formmodules.' + my_module, package=__package__)
请注意.
。
另一种选择是使用sys.path
进行清理,这里没有必要。