Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为Flask导入同一目录中的Python模块_Python_Flask - Fatal编程技术网

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

为Flask导入同一目录中的Python模块,python,flask,Python,Flask,我正在尝试创建一个Flask应用程序。我想在我的应用程序中包含一个单独的模块,将逻辑划分为不同的单元。单独的模块称为“validator”,我当前的目录结构如下所示: src/ validation-api/ __init__.py api.py validator/ __init__.py validator.py validation-form/ ... updater/

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

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