flask_uploads: ImportError: невозможно импортировать имя secure_filename - PullRequest
6 голосов
/ 06 мая 2020

Я хочу создать форму, которая позволяет отправлять изображение с описанием, используя формы 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

Я не смог решить эту проблему, вы знаете, что я могу делать?

Ответы [ 4 ]

17 голосов
/ 11 мая 2020

In flask_uploads.py

Изменить

from werkzeug import secure_filename,FileStorage

на

from werkzeug.utils import secure_filename
from werkzeug.datastructures import  FileStorage
13 голосов
/ 06 мая 2020

Согласно эта проблема , это ошибка, связанная с текущей версией 1.0.0 workzeug. Он объединен, но еще не опубликован в pypi. Обходной путь, который известен до сих пор, - это понизить версию с werkzeug=1.0.0 до werkzeug==0.16.0

. Для этого вам просто нужно запустить команду:

pip install -U Werkzeug==0.16.0

Просмотрите примечания к выпуску от workzeug там - это версия 0.16.1, но в отчете об ошибке нет свидетельств того, что использование этой версии может работать.

2 голосов
/ 28 июня 2020

Вы используете неработающую версию Flask-Uploads.

К сожалению, разработчик пакета решил не выпускать новую версию пакета для PyPi.

Вы можете использовать Flask-Reuploaded в качестве замены, которая решит вашу проблему.

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

0 голосов
/ 08 мая 2020

Я не мог решить проблему с помощью flask -upload, но следил за этим видео, и это позволило мне сделать то, что я хотел: https://www.youtube.com/watch?v=6WruncSoCdI

...