为Flask导入同一目录中的Python模块
我正在尝试创建一个Flask应用程序。我想在我的应用程序中包含一个单独的模块,将逻辑划分为不同的单元。单独的模块称为“validator”,我当前的目录结构如下所示:为Flask导入同一目录中的Python模块,python,flask,Python,Flask,我正在尝试创建一个Flask应用程序。我想在我的应用程序中包含一个单独的模块,将逻辑划分为不同的单元。单独的模块称为“validator”,我当前的目录结构如下所示: src/ validation-api/ __init__.py api.py validator/ __init__.py validator.py validation-form/ ... updater/
src/
validation-api/
__init__.py
api.py
validator/
__init__.py
validator.py
validation-form/
...
updater/
...
我的Flask应用程序位于api.py
中,我正在尝试从validator导入ValidationOptions、ValidationResult、ValidationRun执行,其中ValidationOptions
、ValidationResult
和ValidationRun
是validator
中的类
我发现了错误
ImportError:没有名为validator的模块
如果我尝试从.validator…
或从..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
多亏了@Daniel Roseman,我才知道发生了什么。我将FLASK\u APP
环境变量更改为validation api.api
,并从src
运行python-m FLASK run
命令。所有的进口现在都在工作 如果你有一个简单的应用程序
src/
app.py
something.py
templates/
并且app.py
中有语句import something
,然后确保源目录中没有\uuuu init\uuuuu.py
有关原因的解释,请参阅。请说明您是如何启动Flask应用程序的,以及api.py的内容。@DanielRoseman我已更新了问题。我在转到localhost:5000时遇到了错误。运行这些命令时,您在哪个目录下?src/validation api