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

Python 没有名为flask.ext.wtf的模块,python,flask,flask-wtforms,Python,Flask,Flask Wtforms,我正在关注@Miguel flask,这太棒了。在第3章中,他讨论了web表单和flaskWTF扩展,像这样安装扩展sudo pip install Flask WTF,结果是 成功安装烧瓶WTF烧瓶WTF Werkzeug Jinja2其危险标记安全 但是当执行/run.py时,我得到一个错误: 没有名为flask.ext.wtf的模块` 我在谷歌上搜索了这个错误,并尝试这样运行:flask/bin/python run.py但是得到了相同的错误,也尝试了flask/bin/activate

我正在关注@Miguel flask,这太棒了。在第3章中,他讨论了web表单和flaskWTF扩展,像这样安装扩展
sudo pip install Flask WTF
,结果是

成功安装烧瓶WTF烧瓶WTF 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

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

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
您可以在文档的“升级”部分找到有关此更改的说明:


jbub是对的,但它解决了您将遇到的问题,而不是您当前遇到的问题——教程已经过时,没有提到用户应该使用的库的版本,因此,如果您按照教程所说的那样做,您将遇到问题,除非您更改导入行以匹配jbub所说的内容

但是--您当前遇到的问题不是--如果是的话,您的错误将是
没有名为flask.ext.wtf.Textfield的模块
,此时它根本看不到库

这意味着您没有将Flask WTF库安装到正确的位置,在本例中,它看起来应该安装在您的虚拟环境中,您似乎在名为
Flask
的目录下创建了虚拟环境,为了让事情更清楚一些,我将该目录称为
venv

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

source bin/激活

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

pip安装烧瓶wtf


现在,由于您处于virutal环境中,它将启动存在于该环境中的python版本,并查看您所设置的所有库,这正是您所需要的。因此,当终端提示显示您的虚拟环境仍然处于活动状态时,您可以通过运行
python run.py
启动
run.py
文件,它应该可以解决您的问题。

我也遇到了同样的问题。我又读了一遍,看看我滑倒的地方

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

在这种情况下,应:

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)中可用


请记住,即使在更改不同的导入样式并重新安装flask、flask wtf之后,也要运行“flask/Scripts/python run.py”而不是“python run.py”

,如果它仍然不起作用: 然后在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”

您可以运行命令:pip install-U Flask WTF,并更改为 来自flask.ext.wtf导入表单 从wtforms导入文本字段,布尔字段
从wtforms.validators import Required

中,API已从:

from flask.ext.wtf import Form
致:


执行以下操作:。烧瓶/储物箱/激活

那它就可以正常工作了


干杯。

你确定你正在使用的python版本和你安装的flask的python版本是一样的吗?你能在这里添加更详细的回溯和代码吗?@liva,答案最终对你有用吗?如果是的话,你能接受答案吗?我正在使用新的样式,因为这是教程中的样式。这个答案是w下载Grinberg的v0.4 zipfile时,我工作得非常好,修改了他的
应用程序/forms.py
,并将其与:
flask==0.10.1
wtforms==1.0.5
,以及
flask wtf==0.9.3
一起使用。对于2016年寻找答案的任何人来说,你都需要安装“pip install flask wtf”,然后从“from flask.ext.wtf import Form”改为“from flask.ext.wtf import Form”“from flask\u wft import Form”谢谢!我一直不明白为什么找不到
flask.ext
。它在Py3和Py2中都能工作。显然,API有了变化,但每个示例/教程似乎都使用了旧语法。
from flask_wtf import Form