gpt4 book ai didi

python - Flask 模型无法正确导入

转载 作者:太空宇宙 更新时间:2023-11-03 21:38:48 24 4
gpt4 key购买 nike

嗯,我有一个 Flask、SQL-Alchemy 项目。到目前为止,这是我的结构:

app
|__ module1
| |__ models.py
| |__ views.py
|__ module2
| |__ models.py
| |__ views.py
|__ app.py
|__ config.py

在每个 models.py 上,我都有这个:

from app import db

#classes

在每个views.py上,我都有这个:

from module1.models import *
from module2.models import *
from app import app
from flask import session, request, render_template, url_for, redirect
import datetime

#views

这是我的 app.py 文件:

from flask import Flask
from flask_sqlalchemy import SQLAlchemy
import os

app = Flask(__name__)
db = SQLAlchemy(app)

from module1.views import *
from module2.views import *

import config

def init():
port = int(os.environ.get('PORT', 5000))
app.run(host='0.0.0.0', port=port, debug=True)

if __name__ == "__main__":
init()

当我在 module1.views 上,并从 module2.models 调用模型时,效果非常好。但是,当从 module1.views 上的 module1.models 调用模型时,我收到一个 NameError:

module1.models, module1.views --> Works
module1.models, module2.views --> Works
module2.models, module1.views --> Name Error
module2.models, module2.views --> Works

此外,导入顺利,没有错误。当我调用类(class)时,它失败了。我认为这是导入语句的问题,但我不知道如何解决它。有什么想法吗?

先谢谢大家了

最佳答案

您可能需要在每个子目录 https://docs.python.org/3/tutorial/modules.html#packages 中都有一个 __init__.py 文件。

此答案中还有更多信息可能会有所帮助 What is __init__.py for?

还基于您在 View 之间共享模型功能的方式,使用像

这样的目录结构可能更有意义
.
├── models
│   ├── models1.py
│   └── models2.py
└── views
├── view1.py
└── view2.py

关于python - Flask 模型无法正确导入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53051555/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com