ModuleNotFoundError无法从app.__init__.py导入



我正在尝试设置一个运行在Python 3.7.x上的flask应用程序。我在网上参考了许多教程,但似乎无法解决这个ModuleNotFoundError和stackoverflow问题都不相关。

下面是我的项目结构:

project/
app/
__init__.py
api.py
conf.py
models.py
schema.py
orders-mgmt.toml
requirements.txt
README.md
# app/__init__.py
from flask import Flask
from flask_restful import Api
from app.conf import load_from_toml
import logging
import os.path
if os.path.isfile('/opt/project/orders-mgmt.toml'):
config = load_from_toml('/opt/project/orders-mgmt.toml')
else:
config = load_from_toml()
app = Flask(__name__)
api = Api(app)
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
app.config['SQLALCHEMY_DATABASE_URI'] = config['mysql']['db_uri']
app.config['SQLALCHEMY_ENGINE_OPTIONS'] = {
'pool_recycle': 3000,
'pool_pre_ping': True,
}
# app/api.py
from flask import jsonify
from flask_restful import Resource
from flask_sqlalchemy import SQLAlchemy
from app import app, api, config #ERROR here
from app.models import Request
from app.schema import RequestSchema
db = SQLAlchemy(app)

class TestGet(Resource):
def get(self):
return 'okay'

api.add_resource(TestGet, '/')
if __name__ == '__main__':
app.run(debug=True, host='localhost', port=5000)

当我运行python app/api.py时,我在app/api.pyfrom app import app, api, config中得到ModuleNotFoundError:

$ python app/api.py
Traceback (most recent call last):
File "app/api.py", line 4, in <module>
from app import app, api, config
ModuleNotFoundError: No module named 'app'

我可以知道我的flask应用程序有什么问题吗?

你有循环依赖问题你的应用程序将无法在这样的文件结构中工作将逻辑从init模块移到另一个模块,或者您需要删除所有绝对导入(您自己模块的导入)并将其替换为相对

__init__模块

替换这一行:

from app.conf import load_from_toml


from .conf import load_from_toml

app模块

替换这些行:

from app import app, api, config #ERROR here
from app.models import Request
from app.schema import RequestSchema

from . import app, api, config
from .models import Request
from .schema import RequestSchema

最新更新