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

Posted

技术标签:

【中文标题】没有名为 flask.ext.wtf 的模块【英文标题】:No module named flask.ext.wtf 【发布时间】:2013-11-30 17:25:10 【问题描述】:

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

成功安装 Flask-WTF Flask WTForms Werkzeug Jinja2 itsdangerous markupsafe

但在执行./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

【问题讨论】:

你确定你使用的python版本和你安装flask的python版本是一样的吗?你能在这里添加更详细的回溯和代码吗? @liva,你终于找到答案了吗?如果是这样,你能接受一个答案吗? 【参考方案1】:

API 已更改为:

from flask.ext.wtf import Form

到:

from flask_wtf import Form

See the docs here

【讨论】:

谢谢!我不明白为什么找不到flask.ext。它适用于 Py3 和 Py2。显然 API 发生了变化,但每个示例/教程似乎都使用旧语法。【参考方案2】:

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

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

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

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

【讨论】:

我正在使用新样式,因为这是教程中的样式 当我下载 Grinberg 的 v0.4 zip 文件、修改他的 app/forms.py 并将其用于:flask==0.10.1wtforms==1.0.5flask-wtf==0.9.3 时,这个答案非常有效 对于任何在 2016 年寻找答案的人,您需要安装 'pip install Flask-WTF' 然后从 'from flask.ext.wtf import Form' 更改为 'from flask_wft import Form' 【参考方案3】:

我遇到了同样的问题。我再次阅读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)中使用。

记住运行“flask/Scripts/python run.py”而不是“python run.py”

【讨论】:

【参考方案4】:

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

但是--您当前遇到的问题不是--如果是这样,您的错误将是No module named flask.ext.wtf.Textfield,此时它根本看不到库。

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

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

source bin/activate

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

pip install flask-wtf

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

【讨论】:

【参考方案5】:

即使更改了不同的导入样式并重新安装了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'))

设置你自己的应用程序的库路径,在我的例子中是“venv/Lib/site-packages”

【讨论】:

【参考方案6】:

这样做:.烧瓶/bin/激活

然后它会正常工作。

干杯。

【讨论】:

【参考方案7】:

你可以运行命令:pip install -U Flask-WTF ,然后更改为 从 flask.ext.wtf 导入表格 从 wtforms 导入 TextField, BooleanField from wtforms.validators import 必需

【讨论】:

以上是关于没有名为 flask.ext.wtf 的模块的主要内容,如果未能解决你的问题,请参考以下文章

表单类

没有名为“硒”的模块

macOS 上的“ModuleNotFoundError:没有名为 'dbus' 的模块”

没有名为“email.FeedParser”的模块

ModuleNotFoundError:没有名为“推理”的模块

为啥 ImportError:没有名为 lightgbm 的模块