flask_uploads: ImportError: cannot import name 'secure_filename'
flask_uploads: ImportError: cannot import name 'secure_filename'
我想创建一个表单,允许使用 Flask 表单发送带有描述的图片。
我尝试使用此视频: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.uploads
来自 flask_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
我无法解决这个问题,你知道我能做什么吗?
根据this issue,这是一个与当前workzeug 1.0.0版本相关的错误。它已合并但尚未在 pypi 中发布。
到目前为止知道的解决方法是从 werkzeug=1.0.0
降级到 werkzeug==0.16.0
因此,您只需要 运行 命令:
pip install -U Werkzeug==0.16.0
查看 werkzeug 的发行说明有一个版本 0.16.1
,但在错误报告中没有证据表明使用该版本会有任何帮助。
我无法通过 flask-upload 解决问题,但观看了这个视频,它让我可以做我想做的事:https://www.youtube.com/watch?v=6WruncSoCdI
在flask_uploads.py
改变
from werkzeug import secure_filename,FileStorage
至
from werkzeug.utils import secure_filename
from werkzeug.datastructures import FileStorage
您使用的是 Flask-Uploads
的损坏版本。
不幸的是,包的维护者决定不向 PyPi 发布包的新版本。
您可以使用 Flask-Reuploaded
作为替代品,这可以解决您的问题。
我最后放了一个
-e git://github.com/maxcountryman/flask-uploads.git#egg=elasticutils
在我的 requirements.txt
文件中从 git 获取最新版本的 flask-uploads。
我想创建一个表单,允许使用 Flask 表单发送带有描述的图片。 我尝试使用此视频: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.uploads
来自 flask_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
我无法解决这个问题,你知道我能做什么吗?
根据this issue,这是一个与当前workzeug 1.0.0版本相关的错误。它已合并但尚未在 pypi 中发布。
到目前为止知道的解决方法是从 werkzeug=1.0.0
降级到 werkzeug==0.16.0
因此,您只需要 运行 命令:
pip install -U Werkzeug==0.16.0
查看 werkzeug 的发行说明有一个版本 0.16.1
,但在错误报告中没有证据表明使用该版本会有任何帮助。
我无法通过 flask-upload 解决问题,但观看了这个视频,它让我可以做我想做的事:https://www.youtube.com/watch?v=6WruncSoCdI
在flask_uploads.py
改变
from werkzeug import secure_filename,FileStorage
至
from werkzeug.utils import secure_filename
from werkzeug.datastructures import FileStorage
您使用的是 Flask-Uploads
的损坏版本。
不幸的是,包的维护者决定不向 PyPi 发布包的新版本。
您可以使用 Flask-Reuploaded
作为替代品,这可以解决您的问题。
我最后放了一个
-e git://github.com/maxcountryman/flask-uploads.git#egg=elasticutils
在我的 requirements.txt
文件中从 git 获取最新版本的 flask-uploads。