python flask 上载(_U):导入错误:无法导入名称"secure_filename"

doinxwow  于 2023-01-29  发布在  Python
关注(0)|答案(7)|浏览(358)

我想创建一个表单,允许使用 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

我解决不了这个问题,你知道我该怎么办吗?

fslejnso

fslejnso1#

输入flask_uploads.py
变更

from werkzeug import secure_filename,FileStorage

from werkzeug.utils import secure_filename
from werkzeug.datastructures import  FileStorage
jdzmm42g

jdzmm42g2#

根据this issue,这是一个与当前版本1.0.0的workzeug相关的bug。它被合并,但尚未在pypi中发布。目前知道的解决方案是从werkzeug=1.0.0降级到werkzeug==0.16.0
因此,要做到这一点,你只需要运行命令:

pip install -U Werkzeug==0.16.0

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

pnwntuvh

pnwntuvh3#

您使用的是Flask-Uploads的损坏版本。
不幸的是,这个包的维护者决定不向PyPi发布这个包的新版本。
您可以使用Flask-Reuploaded作为直接替换,它可以解决您的问题。
https://pypi.org/project/Flask-Reuploaded/

up9lanfz

up9lanfz4#

对于Werkzeug版本2.1.2,只需将secure_filename导入为:
from werkzeug.utils import secure_filename

o75abkj4

o75abkj45#

最后我放了一个
-e git://github.com/maxcountryman/flask-uploads.git#egg=elasticutils
在我的requirements.txt文件中从git获取flak-uploads的最新版本。

agxfikkp

agxfikkp6#

使用flask-Reuploaded而不是flask-uploades当您不使用werkzeug但仍然显示错误时会发生这种情况,因此**解决方案是--**pip install Flask-Reuploaded

ulmd4ohb

ulmd4ohb7#

使用此命令:从werkzeug.utils导入secure_filename

相关问题