Flask-迁移“ModuleNotFoundError”

Ale*_*vva 2 python database migrate importerror flask

我正在尝试基于 SQLite 数据库在 Flask api 上进行迁移。这是我的项目结构

\n\n
\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 app.py\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 blueprints\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 conf.py\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 db.sqlite\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 __init__.py\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 migrations\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 models.py\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 templates\n
Run Code Online (Sandbox Code Playgroud)\n\n

然后我在中初始化我的迁移类app.py

\n\n
from flask import Flask, jsonify, request, render_template\nfrom flask_sqlalchemy import SQLAlchemy\n\nfrom conf import ErrorResponses, SuccessResponses\n\n# initialization\napp = Flask(__name__)\ndb = SQLAlchemy(app)\nfrom models import User, db, BlackListToken\n\n# extensions\nfrom flask_migrate import Migrate\nmig = Migrate(app, db)\n
Run Code Online (Sandbox Code Playgroud)\n\n

但从自定义模块导入时失败flask db migrate -m "rm id and made name/surname nullable"

\n\n
Usage: flask db migrate [OPTIONS]\n\nError: While importing "api_flask.app", an ImportError was raised:\n\nTraceback (most recent call last):\n  File "/usr/local/lib/python3.6/dist-packages/flask/cli.py", line 235, in locate_app\n    __import__(module_name)\n  File "/home/zahessi/all/bubbie_D/api_flask/app.py", line 9, in <module>\n    from conf import ErrorResponses, SuccessResponses\nModuleNotFoundError: No module named \'conf\'\n
Run Code Online (Sandbox Code Playgroud)\n\n

外观如下models.py

\n\n
from app import db\n\nclass User(db.Model):\n    __tablename__ = \'users\'\n\n    username = db.Column(db.String(32), index=True, unique=True, nullable=False)\n    email = db.Column(db.String(64), unique=True, nullable=False)\n    password_hash = db.Column(db.String(64), nullable=False)\n    name = db.Column(db.String(32))\n    surname = db.Column(db.String(32))\n    public_id = db.Column(db.String(32))\n    creation_date = db.Column(db.DateTime)\n    ...\n
Run Code Online (Sandbox Code Playgroud)\n\n

当我从自定义 py 文件中删除所有导入时,一切似乎都有效,但是,这是很多不必要的工作。您有什么建议吗?为什么它会以这种方式工作?

\n\n

UPD:添加了conf.py。每次本地导入都会失败,蓝图也会失败,具体取决于导入的顺序。

\n\n
from re import findall\n\nclass ErrorResponses:\n    usernameOrPasswordBlank = {\n        "success": False,\n        "error": "Username and password cannot be blank."\n    }\n    userAlreadyExists = {"success": False, "error": "Such user already exists"}\n    incorrectData = {\n        "success": False,\n        "error": "Incorrect username or password"\n    }\n    invalidData = {\n        "success": False,\n        "error": "Username or password is invalid"\n    }\n    noUser = {\n        "success": False,\n        "error": "There is no user with such username or public_id"\n    }\n    ...\n
Run Code Online (Sandbox Code Playgroud)\n

Mik*_*key 5

我可以看到您解决了问题,但我想向您展示比安装flask-script和创建manage.py文件更简单的解决方案。您只需删除__init__.py与 app.py 文件同一级别的文件即可。它为我解决了问题。干杯:)