重构Flask项目目录后运行报ImportError无法启动如何解决
Flask应用拆分结构后启动报ImportError排查求助
我最初参考Flask官方教程的基础结构开发应用,所有代码都放在同一目录下。随着项目依赖增多,我需要将应用拆分为独立组件,因此调整了项目结构,当前目录组织如下:
Real-Life-Application │ ├── App │ ├── UI │ │ ├── static │ │ │ ├── css │ │ │ │ └── main.css │ │ │ ├── images │ │ │ │ ├── album_placeholder.jpeg │ │ │ │ ├── header.jpeg │ │ │ │ └── logo.png │ │ │ └── javascript │ │ │ ├── create.js │ │ │ └── tracks.js │ │ └── templates │ │ ├── base.html │ │ ├── create.html │ │ ├── index.html │ │ ├── information.html │ │ └── tracks.html │ ├── __init__.py │ ├── authenticate.py │ ├── db_actions.py │ ├── routes.py │ ├── services.py │ └── user_operations.py ├── Pipfile ├── Pipfile.lock ├── Procfile ├── README.md ├── Testing │ ├── __init__.py │ └── testing.py ├── __pycache__ │ ├── authenticate.cpython-39.pyc │ ├── config.cpython-39.pyc │ ├── main.cpython-39.pyc │ ├── services.cpython-39.pyc │ └── user_operations.cpython-39.pyc ├── config.py ├── requirements.txt ├── run.py └── setup.py
我执行export FLASK_APP=run.py和flask run命令启动应用时,收到如下报错:Error: While importing 'run', an ImportError was raised.
我暂未定位到错误原因,恳请各位帮忙排查,相关文件内容如下:
1. run.py文件内容
from App import create_app app = create_app() if __name__ == "__main__": app.run(debug=True)
2. App/init.py文件内容
from flask import Flask import config from flask_bootstrap import Bootstrap from apscheduler.schedulers.background import BackgroundScheduler import sqlalchemy def create_app() -> Flask: app = Flask(__name__) app.config.from_object(config) app.secret_key = app.config['CLIENT_SECRET'] # 连接本地MySQL服务 engine = sqlalchemy.create_engine('sqlite:///:memory:', echo=True) # 创建会话和基础声明类 from sqlalchemy.orm import sessionmaker Session = sessionmaker(bind=engine) from sqlalchemy.ext.declarative import declarative_base Base = declarative_base() # 确保用户表创建完成 from App.user_operations import User Base.metadata.create_all(engine) # 定时更新TopTracks播放列表 from App.services import updatePlaylists scheduler = BackgroundScheduler() scheduler.add_job(updatePlaylists, trigger='interval', days=1) scheduler.start() import App.routes bootstrap = Bootstrap(app) return app
3. App/routes.py文件内容
import logging import time # Flask相关导入 from flask import (jsonify, make_response, redirect, render_template, request, session) # 本地模块导入 from authenticate import createStateKey, getToken from App import app from services import (addTracksPlaylist, createPlaylist, getAllTopTracks, getRecommendedTracks, getTopTracksURI,searchSpotify, createRadarChart, getLikedTrackIds, likedTrackIdsDataFrame, normalizeDf) from user_operations import (addUser, getUserInformation) @app.route('/') @app.route('/index') def index(): """ 首页 """ return render_template('index.html') # 其余路由定义在此省略
4. config.py文件内容
CLIENT_ID = '' CLIENT_SECRET = '' REDIRECT_URI = 'http://127.0.0.1:5000/callback' RESPONSE_TYPE = 'code' GRANT_TYPE = 'authorization_code' TOKEN_URL = '' SCOPE = 'user-read-email' AUTHORIZATION = 'Authorization: Basic *<base64 encoded client_id:client_secret>*' DATABASE_PASSWORD = '' DATABASE_NAME = 'DB'
非常感谢各位抽时间提供帮助。
内容的提问来源于stack exchange,提问作者wisenickel
相关产品推荐
相关产品推荐

