You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flask项目报错ModuleNotFoundError: No module named 'flask_uploads'求助

解决方案:ModuleNotFoundError: No module named 'flask_uploads'

1. 安装正确的依赖包

flask-uploads 是独立于Flask的第三方包,不会随Flask默认安装,你需要单独安装它。由于官方原版已停止维护,若直接安装失败,可使用社区维护的兼容分支 Flask-Reuploaded:

  • 尝试安装官方包:
pip install flask-uploads
  • 若官方包无法正常工作,安装兼容分支:
pip install Flask-Reuploaded

注意:如果项目使用了虚拟环境(如venv、conda),必须先激活对应环境再执行安装命令,否则包会被安装到全局Python环境,项目无法识别。

2. 检查虚拟环境激活状态

确认当前终端已激活项目对应的虚拟环境:

  • Linux/macOS激活venv:source venv/bin/activate
  • Windows激活venv:venv\Scripts\activate
    激活后重新执行安装命令,确保包安装到项目专属环境内。

3. 替代方案:不依赖flask-uploads实现上传功能

如果不想使用第三方包,可直接用Flask结合Werkzeug的原生功能实现文件上传,修改核心代码如下:

from flask import Flask, render_template, url_for, request, make_response, session, send_from_directory
from flask_wtf import FlaskForm
from flask_wtf.file import FileField, FileRequired, FileAllowed
from wtforms import SubmitField
from werkzeug.utils import secure_filename
import os

app = Flask(__name__)

app.config["SECRET_KEY"] = "supersecretkey"
app.config["UPLOAD_FOLDER"] = "static/files"
ALLOWED_EXTENSIONS = {'png', 'jpg', 'jpeg', 'gif'}

# 确保上传目录存在,避免报错
os.makedirs(app.config["UPLOAD_FOLDER"], exist_ok=True)

def allowed_file(filename):
    return '.' in filename and filename.rsplit('.', 1)[1].lower() in ALLOWED_EXTENSIONS

class UploadForm(FlaskForm):
    photo = FileField(
        validators=[
            FileAllowed(ALLOWED_EXTENSIONS, "Only images can be uploaded"),
            FileRequired("File field shouldn't be empty")])
    submit = SubmitField("Upload")

@app.route("/static/files/<filename>")
def get_file(filename): 
    return send_from_directory(app.config["UPLOAD_FOLDER"], filename)

@app.route("/upload", methods=["GET","POST"])
def upload():
    form = UploadForm()
    file_url = None
    if form.validate_on_submit():
        file = form.photo.data
        if file and allowed_file(file.filename):
            filename = secure_filename(file.filename)
            file.save(os.path.join(app.config["UPLOAD_FOLDER"], filename))
            file_url = url_for("get_file", filename=filename)
    return render_template("upload.html", form=form, file_url=file_url)

# 其余代码保持不变...

该方案无需额外安装第三方包,通过原生工具实现相同的图片上传与展示功能。

内容的提问来源于stack exchange,提问作者pickleroll123

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 08:32:24