web-dev-qa-db-fra.com

flask_uploads: ImportError: impossible d'importer le nom 'secure_filename'

Je souhaite créer un formulaire qui permet d'envoyer une image avec une description en utilisant flask forms. J'ai essayé d'utiliser cette vidéo: https://www.youtube.com/watch ? v = Exf8RbgKmhM

mais j'ai eu des problèmes lors du lancement de 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'

J'ai dû remplacer flask.ext.uploads par flask_uploads mais maintenant j'obtiens:

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'

Mes importations et ma configuration ressemblent à ceci:

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

Je n'ai pas pu résoudre ce problème, avez-vous une idée de ce que je peux faire?

4
Santeau

Vous utilisez une version cassée de Flask-Uploads.

Malheureusement, le responsable du package a décidé de ne pas publier une nouvelle version du package sur PyPi.

Vous pouvez utiliser Flask-Reuploaded comme remplacement instantané, ce qui résout votre problème.

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

1
J.G.

Je n'ai pas pu résoudre le problème avec flask-upload mais j'ai suivi cette vidéo et cela m'a permis de faire ce que je voulais faire: https://www.youtube.com/watch?v=6WruncSoCdI

0
Santeau