Python 在 Flask 的同一目录中导入模块

Zac*_*del 5 python flask

我正在尝试创建一个 Flask 应用程序。我想在我的应用程序中包含一个单独的模块,以将逻辑分成不同的单元。单独的模块称为“验证器”,我当前的目录结构如下所示:

src/
    validation-api/
        __init__.py
        api.py
    validator/
        __init__.py
        validator.py
    validation-form/
        ...
    updater/
        ...
Run Code Online (Sandbox Code Playgroud)

我的 Flask 应用程序位于 中api.py,我正在尝试执行from validator import ValidationOptions, ValidationResult, ValidationRunwhere ValidationOptionsValidationResult、 和ValidationRunare 中的类validator

我收到错误

导入错误:没有名为验证器的模块

如果我尝试from .validator...from ..validator收到错误

ValueError:尝试在非包中进行相对导入

我不太明白Python 中的模块和包是如何工作的。有什么建议么?


api.py的内容:

from flask import Flask, request
from validator.validator import ValidationOptions, ValidationResult, ValidationRun

app = Flask(__name__)

@app.route("/validate", methods=["POST"])
def validate(self):
    pass

if __name__ == '__main__':
    app.run(debug=True)
Run Code Online (Sandbox Code Playgroud)

我使用以下三个命令启动 Flask:

set FLASK_APP=api
set FLASK_DEBUG=1
python -m flask run
Run Code Online (Sandbox Code Playgroud)

Zac*_*del 3

感谢@Daniel-Roseman,我已经弄清楚发生了什么事。我将FLASK_APP环境变量更改为validation-api.api,并python -m flask run从 运行命令src。所有导入现在都可以正常工作!