我正在尝试创建Flask应用程序。我想在我的应用程序中包含一个单独的模块,将逻辑分成不同的单元。单独的模块称为“验证器”。我当前的目录结构如下所示:
src/
validation-api/
__init__.py
api.py
validator/
__init__.py
validator.py
validation-form/
...
updater/
...
我的Flask应用程序在api.py
,我正在尝试from validator import ValidationOptions, ValidationResult, ValidationRun
ValidationOptions
,ValidationResult
和ValidationRun
是validator
中的类}。
我收到错误
ImportError:没有名为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)
我使用以下三个命令启动Flask:
set FLASK_APP=api
set FLASK_DEBUG=1
python -m flask run
答案 0 :(得分:1)
感谢@ Daniel-Roseman,我已经知道发生了什么。我将FLASK_APP
环境变量更改为validation-api.api
,并从python -m flask run
运行src
命令。所有进口现在都在运作!
答案 1 :(得分:0)
如果您有一个简单的应用程序
src/
app.py
something.py
templates/
和app.py
中包含语句import something
,然后确保源目录中没有__init__.py
。
有关原因,请参见the doc。