使用 pip 安装 email_validator

Posted

技术标签:

【中文标题】使用 pip 安装 email_validator【英文标题】:Install email_validator using pip 【发布时间】:2020-10-23 17:04:18 【问题描述】:

我已安装 email_validator,但我收到一条错误消息,指出它未安装。 它必须安装在我的项目文件夹中吗?或者它可以在主站点包文件夹中吗?当我运行我的程序时,我收到以下错误消息:

Exception: Install 'email_validator' for email validation support

我可以看到它已安装在主站点包 python3 文件夹中,但是当我运行时

pip install email_validator

终端从我的项目文件夹 site-packages 文件夹中打印:

site-packages % pip install email_validator
Defaulting to user installation because normal site-packages is not writeable
Requirement already satisfied: email_validator in /Users/STL34/Library/Python/3.7/lib/python/site-packages (1.1.1)
Requirement already satisfied: idna>=2.0.0 in /Users/STL34/Library/Python/3.7/lib/python/site-packages (from email_validator) (2.10)
Requirement already satisfied: dnspython>=1.15.0 in /Users/STL34/Library/Python/3.7/lib/python/site-packages (from email_validator) (1.16.0)

并且不会将其安装在我的项目文件夹中。

代码如下:

from flask_wtf import FlaskForm
from wtforms import StringField, PasswordField, SubmitField, BooleanField
from wtforms.validators import DataRequired, Length, Email, EqualTo


class RegistrationForm(FlaskForm):
    username = StringField('Username',
                           validators=[DataRequired(), Length(min=2, max=20)])
    email = StringField('Email',
                        validators=[DataRequired(), Email()])
    password = PasswordField('Password', validators=[DataRequired()])
    confirm_password = PasswordField('Confirm Password',
                                     validators=[DataRequired(), EqualTo('password')])
    submit = SubmitField('Sign Up')


class LoginForm(FlaskForm):
    email = StringField('Email',
                        validators=[DataRequired(), Email()])
    password = PasswordField('Password', validators=[DataRequired()])
    remember = BooleanField('Remember Me')
    submit = SubmitField('Login')

【问题讨论】:

【参考方案1】:

管理包的最简单方法是Virtual environments

email_validator 示例

sudo apt-get install -y python3-venv python3-pip
mkdir email
cd email
deactivate 2> /dev/null
pip3 show virtualenv
if [ $? -ne 0 ] ; then
   pip3 install --upgrade pip
   pip3 install --upgrade setuptools
   pip3 install virtualenv
fi

# now lets build venv
python3 -m venv venv
source venv/bin/activate
pip3 install email_validator
echo "import email_validator" > email.py
echo "print(email_validator.validate_email('hello@gmail.com'))" >> email.py
python3 email.py

输出

Reading package lists... Done
Building dependency tree       
Reading state information... Done
python3-pip is already the newest version (20.0.2-5ubuntu1).
python3-venv is already the newest version (3.8.2-0ubuntu2).
0 upgraded, 0 newly installed, 0 to remove and 41 not upgraded.
Name: virtualenv
Version: 20.0.25
Summary: Virtual Python Environment builder
Home-page: https://virtualenv.pypa.io/
Author: Bernat Gabor
Author-email: gaborjbernat@gmail.com
License: MIT
Location: /home/mcs/.local/lib/python3.8/site-packages
Requires: distlib, appdirs, six, filelock
Required-by: 
Collecting email_validator
  Using cached email_validator-1.1.1-py2.py3-none-any.whl (17 kB)
Collecting idna>=2.0.0
  Using cached idna-2.10-py2.py3-none-any.whl (58 kB)
Collecting dnspython>=1.15.0
  Using cached dnspython-1.16.0-py2.py3-none-any.whl (188 kB)
Installing collected packages: idna, dnspython, email-validator
Successfully installed dnspython-1.16.0 email-validator-1.1.1 idna-2.10
<ValidatedEmail hello@gmail.com>

【讨论】:

我的项目已经在 Pycharm 中构建。我在 venv 文件夹中运行了你的部分代码:pip3 install email_validator echo "import email_validator" &gt; email.py echo "print(email_validator.validate_email('hello@gmail.com'))" &gt;&gt; email.py python3 email.py,它起作用了。但是当我从 Pycharm 运行程序时,我仍然收到错误消息 - STL34 好的 - 我也使用 PyCharm。 Preferences -> Project -> Project Interpreter :将其设置为您的 venv 而不是默认的 python 安装。我建议你有一个 requirements.txt 并将你所有的项目库安装到你的项目 venv 中。使从 IDE 到运行时环境(包括云)的部署更加简单 项目解释器设置为 ~/foldername/venv/bin/python。我仍然收到错误消息。我尝试将 email_validator 文件从 /Users/STL34/Library/Python/3.7/lib/python/site-packages 路径直接复制到 project/venv/lib/python3.7/site-packages。仍然收到错误消息。【参考方案2】:

你的意思是它没有出现在我的项目中。你能发布做的输出吗

from email_validator import validate_email, EmailNotValidError

在我们的 python 文件中 如果您使用的是pyenv,那么也从pyenv 安装该模块。

【讨论】:

【参考方案3】:

我解决了这个问题。我使用带有 -t 标志的 pip 在我的项目文件夹站点包文件夹中安装 email_validator。如果没有 -t 标志,pip 会在 Python3 站点包文件夹中安装 email_validator,这不起作用。

【讨论】:

您正在为自己保存将来的问题....使用虚拟环境,这样您就不会随着您拥有的项目数量的增加以及部署环境与您的开发不同而陷入无法解决的包依赖关系机器 我很抱歉。我所指的站点包文件夹位于 venv 文件夹中。这是路径:/projects/project/venv/lib/python3.7/site-packages/email_validator。 好的 - 如果你正确设置了你的环境,你可以使用 pycharm。在命令行需要先用source venv/bin/activate初始化venv 在您的虚拟环境中,只需执行pip install wtforms[email]

以上是关于使用 pip 安装 email_validator的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 email_validator 验证电子邮件地址

email_validator 挤压 tefxformfield 颤动

使用 pip 快速安装 OpenCV

使用 pip 安装 TensorFlow

pip安装与使用

Linux pip安装使用