26

我想创建一个表单,允许使用烧瓶表单发送带有描述的图片。我尝试使用此视频:https ://www.youtube.com/watch?v=Exf8RbgKmhM

但我在启动 app.py 时遇到了麻烦:

➜  website git:(master) ✗ python3.6 app.py
Traceback (most recent call last):
  File "app.py", line 10, in <module>
    from flask.ext.uploads import UploadSet, configure_uploads, IMAGES
ModuleNotFoundError: No module named 'flask.ext'

我不得不替换 flask.ext.uploadsflask_uploads 但现在我得到了:

Traceback (most recent call last):
  File "app.py", line 10, in <module>
    from flask_uploads import UploadSet, configure_uploads, IMAGES
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/flask_uploads.py", line 26, in <module>
    from werkzeug import secure_filename, FileStorage
ImportError: cannot import name 'secure_filename'

我的导入和配置如下所示:

from datetime import datetime
from flask_sqlalchemy import SQLAlchemy
from flask import Flask, session, render_template, url_for, redirect, flash, request
from wtforms import Form, fields,TextField, StringField, PasswordField, BooleanField,validators
from wtforms.validators import InputRequired, Email, Length, DataRequired
from flask_wtf import FlaskForm
from flask_uploads import UploadSet, configure_uploads, IMAGES
from flask_login import LoginManager, UserMixin, login_user, login_required, logout_user, current_user

我无法解决这个问题,你知道我能做什么吗?

4

5 回答 5

96

flask_uploads.py

改变

from werkzeug import secure_filename,FileStorage

from werkzeug.utils import secure_filename
from werkzeug.datastructures import  FileStorage
于 2020-05-11T12:33:21.187 回答
31

根据this issue,这是与workzeug当前版本1.0.0相关的错误。它已合并但尚未在 pypi 中发布。到目前为止,解决方法是从降级werkzeug=1.0.0werkzeug==0.16.0

因此,您只需要运行以下命令:

pip install -U Werkzeug==0.16.0

查看 werkzeug 的发行说明有一个版本0.16.1,但在错误报告中没有证据表明使用该版本可能有任何帮助。

于 2020-05-06T06:27:26.163 回答
17

您使用的是损坏的Flask-Uploads.

不幸的是,包的维护者决定不向 PyPi 发布包的新版本。

您可以Flask-Reuploaded用作替代品,从而解决您的问题。

https://pypi.org/project/Flask-Reuploaded/

于 2020-06-28T13:49:53.127 回答
0

我无法解决烧瓶上传的问题,但按照这个视频,它让我可以做我想做的事:https ://www.youtube.com/watch?v=6WruncSoCdI

于 2020-05-08T05:41:48.630 回答
0

我最后放了一个

-e git://github.com/maxcountryman/flask-uploads.git#egg=elasticutils

在我的requirements.txt文件中从 git 获取最新版本的烧瓶上传。

于 2020-09-21T14:35:27.417 回答