我在尝试为音乐推荐项目运行 Flask Web 应用程序时遇到导入错误。我收到的错误消息是:
Traceback (most recent call last):
File "/data/data/com.termux/files/home/music_recommender/app.py", line 4, in <module>
app = create_app()
File "/data/data/com.termux/files/home/music_recommender/app/__init__.py", line 18, in create_app
from app import routes
File "/data/data/com.termux/files/home/music_recommender/app/routes.py", line 2, in <module>
import spotipy
File "/data/data/com.termux/files/home/music_recommender/venv/lib/python3.11/site-packages/spotipy/__init__.py", line 2, in <module>
from client import Spotify, SpotifyException
ModuleNotFoundError: No module named 'client'
我认为该问题与spotipy 模块及其“客户端”子模块有关。但是,我不确定为什么它找不到这个子模块。
我已从此 GitHub 链接克隆了存储库:GitHub 存储库。
我尝试通过在项目根目录中执行 python app.py 来运行 Flask Web 应用程序。
Flask网站并没有成功运行,而是遇到了上面提到的ImportError。
我已经审查了代码并确保我已经安装了项目的requirements.txt 文件中提到的所有必要的依赖项。
我已经克隆了存储库,并能够在执行以下步骤后运行该项目:
spotipy
版本项目
spotipy
文件中存在的 requirements.txt
版本已过时。更新到最新版本可以修复您遇到的 ModuleNotFoundError
异常。要更新软件包,请运行以下命令:
$ pip install --upgrade spotipy
NameError
异常即使修复了有关
spotipy
版本的问题,如果您尝试执行命令 python app.py
,您仍然会收到 NameError
。
模块 app/routes.py
似乎正在尝试引用名为 app
的对象,该对象是由 create_app()
中的函数 app/__init__.py
创建的,但无法找到它。要解决此问题,您可以对项目模块执行以下修改:
app/__init__.py
将
app/__init__.py
中的源代码替换为:
import os
import spotipy
import spotipy.util as sp_util # Import Spotify utility functions
from config import Config
from flask import (Flask, redirect, redirect, render_template, render_template, request,
request, session, session, url_for, url_for)
from flask_session import Session
from spotipy.oauth2 import SpotifyOAuth, SpotifyOAuth
# Initialize and configure Flask-Session
session = Session()
def create_app():
app = Flask(__name__)
app.config.from_object(Config)
# Configure Flask-Session
app.config['SESSION_TYPE'] = 'filesystem'
app.config['SESSION_PERMANENT'] = False
session.init_app(app)
return app
app = create_app()
from app.routes import *
app/routes.py
将导入
from app import app
添加到模块 app/routes.py
:
from flask import render_template, redirect, url_for, session, request
import spotipy
from spotipy.oauth2 import SpotifyOAuth
import spotipy.util as sp_util # Import Spotify utility functions
import os
from app import app # <-- Add this import HERE
# Define Spotify API credentials and settings
client_id = os.environ.get('SPOTIPY_CLIENT_ID')
# ...
app.py
将其替换为
from app import create_app
,而不是导入 from app import app
。这是 app.py
脚本,其中包含修改后的导入语句:
from flask import Flask
from app import app
if __name__ == '__main__':
app.run(debug=True)
完成前面提到的修改后,您应该能够运行命令
python app.py
并访问网络应用程序: