没有名为flask.ext.wtf的模块

时间:2013-11-17 16:06:49

标签: python flask flask-wtforms

我正在关注@Miguel flask mega tutorial,这很棒。在第3章中,他讨论了Web表单和flaskWTF扩展,安装了像sudo pip install Flask-WTF这样的扩展导致

  

成功安装Flask-WTF Flask WTForms Werkzeug Jinja2其危险标记安全

但在执行./run.py时出现错误:

  

没有名为flask.ext.wtf`

的模块

我发现了错误并试图像这样运行:flask/bin/python run.py但是遇到了同样的错误,也尝试了flask/bin/activate

更新:如果遇到同样的错误,这就解决了我的问题 我安装了以下内容,肯定不是全部都需要,但因为我没有一个一个地找出哪个诀窍我列出了所有这些

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

7 个答案:

答案 0 :(得分:14)

您可能正在使用旧版本的导入样式:

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

导入样式从0.9.0版本开始更改。请务必更新您的导入:

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

您可以在docs的升级部分找到有关此更改的说明:

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

答案 1 :(得分:13)

API已从:

更改
from flask.ext.wtf import Form

为:

from flask_wtf import Form

See the docs here

答案 2 :(得分:7)

我遇到了同样的问题。我再次阅读steps 1以查看我滑倒的位置。

请记住为项目安装必要的模块。

在这种情况下如下:

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

由于您已经创建了这个虚拟环境" flask",所有安装的模块只能在您的虚拟环境(烧瓶)中使用。

记得运行" flask / Scripts / python run.py"而不是" python run.py"

答案 3 :(得分:5)

jbub是对的,但正在解决你将遇到的问题,而不是你当前遇到的问题 - 教程已过时,并没有提到用户应该使用的库版本,所以如果你按照教程说你会遇到问题,除非你改变你的导入行以匹配jbub所说的。

但是 - 你目前遇到的问题不是那个 - 如果是的话,那么你的错误就是No module named flask.ext.wtf.Textfield,而它根本看不到图书馆。

这意味着您尚未将Flask-WTF库安装到正确的位置,在这种情况下,它看起来应该安装在虚拟环境中,您似乎在名为{{1}的目录下创建了该环境为了让事情更清楚一点,我将把这个目录称为flask

虚拟环境是一个小空间,你需要进入它,然后把东西放在架子上(安装你的库)。 因此,首先需要激活您的虚拟环境,因此启动终端并导航到您创建的虚拟环境(venv目录),然后激活它(走进房间):

venv

您的控制台提示符将更改为显示您已为此终端激活它 - 现在您的终端站在房间内,因此您可以根据需要安装库,甚至不需要source bin/activate任何更重要的是,因为您的小房间对您的用户来说是安全的,所以它不会影响它门外的世界。因此,让我们安装flask-wtf(以及通过询问pip可能需要的任何其他库):

sudo等。

现在,因为你处于虚拟环境中,它将启动那里存在的python版本并查看你设置的所有库,这就是你想要的。因此,当终端提示显示您的虚拟环境仍处于活动状态时,您可以通过运行pip install flask-wtf启动run.py文件,它可以解决您的问题。

答案 4 :(得分:1)

即使更改了不同的导入样式并重新安装了flask-flask-wtf,如果它仍然不起作用: 然后在config.py中(" config.py可能有不同的名称,例如app_config.py等)

插入行

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

设置你自己的应用程序的lib路径,在我的情况下它是" venv / Lib / site-packages"

答案 5 :(得分:0)

这样做:。烧瓶/ bin中/激活

然后它会正常工作。

干杯。

答案 6 :(得分:-1)

你可以运行命令:pip install -U Flask-WTF,并改为 来自于flask.ext.wtf导入表格 来自wtforms导入TextField,BooleanField 来自wtforms.validators import必需