WTForms:安装“email_validator”以获得电子邮件验证支持

Posted

技术标签:

【中文标题】WTForms:安装“email_validator”以获得电子邮件验证支持【英文标题】:WTForms: Install 'email_validator' for email validation support 【发布时间】:2020-08-04 23:37:41 【问题描述】:

运行以下代码进行表单验证时出现异常。

File "/Users/homeduvvuri/Documents/Learning/PartyGoUdemy/PartGo/user/forms.py", line 11, in BaseUserForm
    email = EmailField('Email', [validators.DataRequired(), validators.Email()])
File "/Users/homeduvvuri/Documents/Learning/PartyGoUdemy/PartGo/partgo-env/lib/python3.7/site-packages/wtforms/validators.py", line 332, in __init__
    raise Exception("Install 'email_validator' for email validation support.")
Exception: Install 'email_validator' for email validation support.

在 codeanywhere VM 上完美运行。不在本地机器上。

from flask_wtf import FlaskForm
from flask_wtf.file import FileField, FileAllowed
from wtforms import Form, StringField, PasswordField, validators, ValidationError
from wtforms.validators import InputRequired, Email
from wtforms.fields.html5 import EmailField
from wtforms.widgets import TextArea
from user.models import User

class BaseUserForm(FlaskForm):
    name = StringField('Name', [validators.DataRequired(), validators.Length(min=2, max=30)])
    email = EmailField('Email', [validators.DataRequired(), validators.Email()])

【问题讨论】:

堆栈跟踪可以使用一些格式。 错误本身说 Exception: Install 'email_validator' for email validation support. install email_validator.just install email_validator using pip install email-validator 命令。安装email-validator 后我遇到了同样的问题 【参考方案1】:

如果您查看第 9 行的 wtforms/validators.py 文件:

import email_validator

只需安装软件包:

pip install email_validator

【讨论】:

即使是异常也使解决方案变得清晰:Exception: Install 'email_validator' for email validation support. 我的坏人。我很好奇为什么它在我的虚拟机上没有明确要求在我的本地实例上这样做。从一开始就试图弄清楚如何预测和避免此类跨机器/平台错误。 我今天遇到了同样的问题,应用程序在我的本地运行良好,但在 VM 上抛出了这个错误。 WTForms 就在今天发布了一个新版本 2.3.1,它打破了一切。回到 2.2.1 为我修复了它。 @VeeDuvv 考虑到 install 具有广泛的含义,因此断章取义,它的含义远不止运行 pip install。 我在使用 WTForms 2.3.3 时遇到了同样的问题。 'pip install email-validator' 解决了它。电子邮件验证器版本:1.1.3。尽管它安装了一些其他软件包:idna 和 dnspython。【参考方案2】:

如果你想用wtforms 安装它:

pip install wtforms[email]

【讨论】:

我收到消息:未找到匹配项:wtforms[email] @MichaelLossagk 我刚刚尝试过这个(Python 3.7.9),它仍然有效。此外,电子邮件选项仍在他们的配置中:github.com/wtforms/wtforms/blob/master/setup.cfg【参考方案3】:

来自 WTForms 2.3.0 version,电子邮件验证由名为 email-validator (PR #429) 的外部库处理。如果你想启用电子邮件验证支持,你要么需要安装 WTForms 额外需要email

$ pip install wtforms[email]

或者你可以直接安装email-validator

$ pip install email-validator

或者您可以回到旧版本的 WTForms:

$ pip install wtforms==2.2.1

附:如果你使用 Flask-WTF,除了直接安装email-validator,你还可以在下一个release (> 0.14.3 )。

【讨论】:

【参考方案4】:

尝试安装

pip install email-validator

【讨论】:

【参考方案5】:

我在最近的更新中遇到了同样的问题,尝试安装 email_validator 和 flask-validator 并继续这个异常。通过添加解决 requirements.txt 以下行: email-validator == 1.0.5 asSuggest [here].(https://github.com/alphagov/notifications-admin/commit/5ce2906c5aa6d16)

其实 wtforms[email]==2.3.1 是我需要的。

【讨论】:

【参考方案6】:

当我使用虚拟环境运行它时,这也发生在我身上。蟒蛇 3.7 但是,当我将项目解释器切换回本地机器 Python 3.7 时,我运行:

pip install email_validator

效果很好。

我只是觉得奇怪的是,我无法在我的 anaconda 项目解释器中安装模块“email_validator”。所以我建议你先用本地机器试试。

【讨论】:

【参考方案7】:

你需要pip install email-validator,wtforms 依赖于 email-validator。

你可以在 Github 上看到 email-validator 模块https://github.com/JoshData/python-email-validator

【讨论】:

【参考方案8】:

这应该对我有用。 只需在项目终端中安装它:

pip install email-validator

【讨论】:

【参考方案9】:

尝试安装

pip install WTForms==2.1 

【讨论】:

您好!虽然这段代码可以解决问题,including an explanation 解决问题的方式和原因确实有助于提高帖子的质量,并可能导致更多的赞成票。请记住,您正在为将来的读者回答问题,而不仅仅是现在提问的人。请edit您的回答添加解释并说明适用的限制和假设。 这也没有解决问题,因为我有那个版本的 WTForms,我得到了同样的异常。【参考方案10】:

添加到已经说过的内容以供将来参考,

pip install email_validator

P.S 安装后不需要导入 email_validator。

【讨论】:

【参考方案11】:

来自 wtf 表单

验证电子邮件地址。需要安装 email_validator 包。例如:pip install wtforms[email]。

pip install wtforms[email]

pip install email_validator

【讨论】:

【参考方案12】:

wtforms/validators.py 文件的第 392 行中,您可以看到特别针对此事件进行了异常处理,这就是执行以下行以引发警报的原因

if email_validator is None:  # pragma: no cover
            raise Exception("Install 'email_validator' for email validation 
 support.")

为了 wtforms/validators.py 的缘故,解决方案是在同一位置/目录中 pip install email-validator

我之前也遇到过同样的错误:(

【讨论】:

【参考方案13】:

在你的项目目录中运行:

pip install email_validator

这对我有用!

【讨论】:

【参考方案14】:

我不知道根本原因是否是我在终端中使用了 zsh,但是当我尝试以下命令时,我也收到错误“zsh: no matches found: wtforms[email]”。

pip install wtforms[email]

但是,我尝试执行以下命令,它对我有用。

pip install -U "wtforms[email]"

【讨论】:

【参考方案15】:

如果我们在 Python 程序中使用 wtforms.validators.Email,则会引发异常,要求我们安装 email_validator 以支持电子邮件验证。 该问题的解决方案是在终端 pip install email_validator

中键入以下命令

【讨论】:

这在其他答案中已经提到了。【参考方案16】:

如果你在运行你的应用之前已经移除了构建依赖,请检查idna是否存在。

对于 Alpine Linux,在安装构建依赖项之前使用apk add py3-idna。那么这个包就不会在构建依赖虚拟包中所以不会被自动删除。

【讨论】:

以上是关于WTForms:安装“email_validator”以获得电子邮件验证支持的主要内容,如果未能解决你的问题,请参考以下文章

WTForms组件

WTForms In Flask(WTForms在Flask中的应用)

6---Flask-WTForms

85flask之wtforms

wtforms-表单生成及验证

wtforms