web-dev-qa-db-fra.com

Aucun module nommé flask.ext.wtf

Je suis @Miguel flask mega tutorial ce qui est génial. Dans le chapitre 3, il parle des formulaires Web et de l'extension flaskWTF, en installant l'extension comme ceci Sudo pip install Flask-WTF a entraîné

Flask-WTF Flask WTForms Werkzeug Jinja2 itsdangerous markupsafe) installé avec succès

mais lors de l'exécution de ./run.py j'obtiens une erreur:

Aucun module nommé flask.ext.wtf`

J'ai recherché l'erreur sur Google et essayé de l'exécuter comme suit: flask/bin/python run.py mais a obtenu la même erreur, a également essayé flask/bin/activate

Mise à jour: si vous rencontrez la même erreur, c'est ce qui a résolu le problème pour moi, j'ai installé ce qui suit, bien sûr, ils ne sont pas tous nécessaires, mais puisque je ne suis pas allé un par un pour savoir lequel a fait l'affaire, je suis les répertoriant tous

flask/bin/pip install flask-login
flask/bin/pip install flask-openid
flask/bin/pip install flask-mail
flask/bin/pip install sqlalchemy
flask/bin/pip install flask-sqlalchemy
flask/bin/pip install sqlalchemy-migrate
flask/bin/pip install flask-whooshalchemy==0.55a
flask/bin/pip install flask-wtf
flask/bin/pip install pytz
flask/bin/pip install flask-babel
flask/bin/pip install flup
16
liv a

L'API est passée de:

from flask.ext.wtf import Form

à:

from flask_wtf import Form

Voir la documentation ici

16
Pavel Chernikov

Vous utilisez probablement le style d'importation des anciennes versions:

from flask.ext.wtf import Form, TextField, BooleanField
from flask.ext.wtf import Required

Le style d'importation a changé à partir de la version 0.9.0. Assurez-vous de mettre à jour vos importations:

from flask.ext.wtf import Form
from wtforms.fields import TextField, BooleanField
from wtforms.validators import Required

Vous pouvez trouver la note sur cette modification dans la section de mise à niveau de la documentation:

https://flask-wtf.readthedocs.org/en/latest/upgrade.html#version-0-9-

14
jbub

J'ai eu le même problème. J'ai relu étapes 1 pour vérifier où j'ai glissé.

N'oubliez pas d'installer les modules nécessaires à votre projet.

Dans ce cas, les éléments suivants:

flask/bin/pip install flask-login
flask/bin/pip install flask-openid
flask/bin/pip install flask-mail
flask/bin/pip install sqlalchemy
flask/bin/pip install flask-sqlalchemy
flask/bin/pip install sqlalchemy-migrate
flask/bin/pip install flask-whooshalchemy==0.55a
flask/bin/pip install flask-wtf
flask/bin/pip install pytz
flask/bin/pip install flask-babel
flask/bin/pip install flup

Puisque vous avez créé cet environnement virtuel, "flask", tous les modules installés ne sont disponibles que dans votre environnement virtuel (flask).

N'oubliez pas d'exécuter "flask/Scripts/python run.py" et non "python run.py"

7
olleh

jbub a raison, mais traite un problème que vous rencontrerez, plutôt que le problème que vous rencontrez actuellement - le tutoriel est daté et ne mentionne pas quelles versions de la bibliothèque l'utilisateur devrait utiliser, donc si vous faites comme le didacticiel indique que vous allez rencontrer des problèmes, sauf si vous modifiez vos lignes d'importation pour qu'elles correspondent à ce que jbub dit.

Mais-- le problème que vous rencontrez actuellement n'est pas que-- si tel était le cas, votre erreur serait No module named flask.ext.wtf.Textfield pour le moment, il ne peut pas voir la bibliothèque du tout.

Cela signifie que vous n'avez pas installé la bibliothèque Flask-WTF à l'emplacement correct, dans ce cas, il semble qu'elle devrait être installée dans votre environnement virtuel, que vous semblez avoir créé dans un répertoire appelé flask, pour rendre les choses un peu plus claires, je vais faire référence à ce répertoire comme venv.

L'environnement virtuel est une petite pièce, vous devez y entrer, puis mettre les choses sur l'étagère (installer vos bibliothèques). Donc, vous devez d'abord activer votre environnement virtuel, alors lancez un terminal et accédez à l'environnement virtuel que vous avez créé (le répertoire venv), puis activez-le (entrez dans la pièce):

source bin/activate

L'invite de votre console changera pour montrer que vous l'avez activé pour ce terminal - maintenant votre terminal se trouve dans la pièce, vous pouvez donc installer vos bibliothèques selon vos besoins, vous n'avez même plus besoin de Sudo, parce que votre petite pièce est sans danger pour votre utilisateur, elle n'affecte pas le monde extérieur. Permet donc d'installer flask-wtf (et toutes les autres bibliothèques dont vous pourriez avoir besoin en demandant à pip):

pip install flask-wtf etc.

Maintenant, comme vous êtes dans l'environnement virutal, il lancera la version de python qui existe là-bas et verra toutes les bibliothèques que vous avez configurées, ce que vous voulez. l'invite du terminal indique que votre environnement virtuel est toujours actif, vous pouvez lancer votre run.py fichier en exécutant python run.py et cela devrait résoudre votre problème.

5
Doobeh

Même après avoir changé différents styles d'importation et réinstallé flask, flask-wtf, si cela ne fonctionne toujours pas: alors dans config.py ("config.py peut être de nom différent, par exemple app_config.py etc.)

insérer la ligne

sys.path.insert(0, os.path.join(os.path.dirname(__file__), 
'venv/Lib/site-packages'))

définissez le chemin de la lib de votre propre application, dans mon cas c'était "venv/Lib/site-packages"

1
moovon

Faites ceci:. flacon/bac/activer

Ensuite, cela fonctionnera correctement.

À votre santé.

0
Théo T. Carranza