我想创建一个表单,允许使用 flask 表单发送带有描述的图片。我试着使用这个视频:https://www.youtube.com/watch?v=Exf8RbgKmhM
但我在启动www.example.com时遇到了问题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_uploads
替换flask.ext.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
我解决不了这个问题,你知道我该怎么办吗?
7条答案
按热度按时间fslejnso1#
输入
flask_uploads.py
变更
到
jdzmm42g2#
根据this issue,这是一个与当前版本1.0.0的workzeug相关的bug。它被合并,但尚未在pypi中发布。目前知道的解决方案是从
werkzeug=1.0.0
降级到werkzeug==0.16.0
因此,要做到这一点,你只需要运行命令:
在werkzeug的发行说明中有一个版本
0.16.1
,但在错误报告中没有证据表明使用该版本可能有任何帮助。pnwntuvh3#
您使用的是
Flask-Uploads
的损坏版本。不幸的是,这个包的维护者决定不向PyPi发布这个包的新版本。
您可以使用
Flask-Reuploaded
作为直接替换,它可以解决您的问题。https://pypi.org/project/Flask-Reuploaded/
up9lanfz4#
对于Werkzeug版本2.1.2,只需将
secure_filename
导入为:from werkzeug.utils import secure_filename
o75abkj45#
最后我放了一个
-e git://github.com/maxcountryman/flask-uploads.git#egg=elasticutils
在我的
requirements.txt
文件中从git获取flak-uploads的最新版本。agxfikkp6#
使用flask-Reuploaded而不是flask-uploades当您不使用werkzeug但仍然显示错误时会发生这种情况,因此**解决方案是--**pip install Flask-Reuploaded
ulmd4ohb7#
使用此命令:从werkzeug.utils导入secure_filename