我開始使用這里詳述的非常基本的結構構建我的 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.
我無法弄清楚是什么導致了這個錯誤。任何見解將不勝感激。下面是run.py的內容:
from App import create_app
app = create_app()
if __name__ == "__main__":
app.run(debug=True)
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']
# connect to local instance of mysqlDB server
engine = sqlalchemy.create_engine('sqlite:///:memory:', echo=True)
# create session and base declarative
from sqlalchemy.orm import sessionmaker
Session = sessionmaker(bind=engine)
from sqlalchemy.ext.declarative import declarative_base
Base = declarative_base()
# make sure user table is created
from App.user_operations import User
Base.metadata.create_all(engine)
# schedule updates for the TopTracks playlists
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
App/routes.py 的內容:
import logging
import time
# Flask Imports
from flask import (jsonify, make_response, redirect, render_template,
request, session)
# Local Imports
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():
"""
Homepage.
"""
return render_template('index.html')
# More route definitions come after this of course.
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'
再次,我真的很感謝任何花時間提供幫助的人。
uj5u.com熱心網友回復:
非常感謝@furas。我的問題不在原始問題中的任何檔案中。我必須運行python run.py以獲得更深入的日志記錄回應,其中包括回溯報告。我收到的 Traceback 發現了我在重組后的應用程式中的回圈匯入。
有時簡單地運行flask run會提供問題的回溯,但我猜當問題出在應用程式的初始化時flask run是不夠的
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/365944.html
