Sid*_*kel 6 python flask python-importlib
我正在使用烧瓶,并且具有以下结构
<root>
manage_server.py
cas <directory>
--- __init__.py
--- routes.py
--- models.py
--- templates <directory>
--- static <directory>
--- formmodules <directory>
------ __init__.py
------ BaseFormModule.py
------ Interview.py
Run Code Online (Sandbox Code Playgroud)
在routes.py中,我试图在Interview模块中创建Interview类的实例,如下所示
my_module = "Interview"
module = importlib.import_module('formmodules."+my_module)
Run Code Online (Sandbox Code Playgroud)
我在这里看到一个错误
ImportError: No module named formmodules.Interview
Run Code Online (Sandbox Code Playgroud)
有关初始化文件的一些信息:
/cas/formmodules/__init__.py is empty
/cas/__init__.py is where I initialize my flask app.
Run Code Online (Sandbox Code Playgroud)
让我知道了解这些文件中的任何内容是否有帮助。
这是经典的相对与绝对导入问题之一。
formmodules仅相对于存在cas,但import_module绝对导入(与一样from __future__ import absolute_imports)。由于formmodules无法通过找到sys.path,因此导入失败。
解决此问题的一种方法是使用相对导入。
如果名称是用相对术语指定的,那么必须将package参数指定给要用作解析软件包名称的锚点的软件包。
您可能要尝试:
module = importlib.import_module('.formmodules.' + my_module, package=__package__)
Run Code Online (Sandbox Code Playgroud)
注意.。
另一个选择是与混用sys.path,在这里确实没有必要。
| 归档时间: |
|
| 查看次数: |
4502 次 |
| 最近记录: |