没有名为 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.1
、wtforms==1.0.5
和 flask-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' 的模块”