Python 3-无法对在virtualenv中创建的flask服务器应用程序进行相对导入

Python 3-无法对在virtualenv中创建的flask服务器应用程序进行相对导入,python,flask,virtualenv,python-import,Python,Flask,Virtualenv,Python Import,我将FLASK\u应用程序设置为api.py,然后运行FLASK run,但是 我收到错误SystemError:未加载父模块“”,无法执行相对导入。PyCharm上没有任何错误,这证实了语法上这是正确的 api.pi from . import models from flask import Flask app = Flask(__name__) @app.route('/') def hello_world(): return 'Hello, Welcome to the API

我将
FLASK\u应用程序设置为
api.py
,然后运行
FLASK run
,但是 我收到错误
SystemError:未加载父模块“”,无法执行相对导入
。PyCharm上没有任何错误,这证实了语法上这是正确的

api.pi

from . import models 
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello_world():
    return 'Hello, Welcome to the API!'
if __name__ == '__main__':
    app.run()
目录结构

           ├── ProjectDirectory
           │    ├── flask-api
           │    │   ├── venv
           │    │   ├── api.py
           │    │   └── models.py
           │    ├── modelpackage
           │    │   ├── __init__.py
           │    │   ├── classA.py
           │    │   ├── classB.py
           │    │   ├── helpers.py
           │    │   └── simplescript.py
如上所示,
api.py
models.py
都位于同一目录中,并且使用的是来自的
。导入模型
行应将脚本的代码导入
api.py
。作为参考,此flask服务器是根据flask官方文档使用
virtualenv
创建的,因此在
flask api
目录中有一个
venv
目录

另外,
models.py
进一步从
modelpackage
导入内容,因此为了完整性,我将其包含在上面


这与Flask/VirtualEnv/目录结构有关吗

当模块用作主模块时,其名称为
\uuuu main\uuuu
。因此,相对进口不起作用。你应该使用绝对进口。 即
来自flask_api导入模型

这里是更多信息的链接

请注意,相对导入基于当前模块的名称。由于主模块的名称始终为“main”,因此用作Python应用程序主模块的模块必须始终使用绝对导入


注意:根据PEP8,使用绝对导入,而不是相对导入。

当模块用作主模块时,其名称为
\uuuuuu main\uuuu
。因此,相对进口不起作用。你应该使用绝对进口。 即
来自flask_api导入模型

这里是更多信息的链接

请注意,相对导入基于当前模块的名称。由于主模块的名称始终为“main”,因此用作Python应用程序主模块的模块必须始终使用绝对导入


注意:根据PEP8,使用绝对导入,而不是相对导入。

事实上,我从你的回答中意识到,我忘了添加
\uuuu init\uuuuuuuuuy.py
是的。如果当前模块的名称为
\uuuuuu main\uuuuu
的话,那就行了。实际上,我从你的回答中意识到,我忘了添加
\uuuuu init\uuuuuuu.py
是的。如果当前模块的名称为
\uuuu main\uuuu