python 自动发送邮件需要用到 email,但是python3 在安装email包的时候出现了难以解决的问题。
问题:
pip install email
Collecting email
Using cached https://files.pythonhosted.org/packages/71/e7/816030d3b0426c130040bd068be62b9213357ed02896f5d9badcf46d1b5f/email-4.0.2.tar.gz
ERROR: Command errored out with exit status 1:
command: 'D:\anaconda\python.exe' -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'C:\\Users\\Administrator\\AppData\\Local\\Temp\\pip-install-ucmeohfy\\email\\setup.py'"'"'; __file__='"'"'C:\\Users\\Administrator\\AppData\\Local\\Temp\\pip-install-ucmeohfy\\email\\setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' egg_info --egg-base pip-egg-info
cwd: C:\Users\Administrator\AppData\Local\Temp\pip-install-ucmeohfy\email\
Complete output (11 lines):
Traceback (most recent call last):
File "" , line 1, in <module>
File "D:\anaconda\lib\site-packages\setuptools\__init__.py", line 18, in <module>
import setuptools.version
File "D:\anaconda\lib\site-packages\setuptools\version.py", line 1, in <module>
import pkg_resources
File "D:\anaconda\lib\site-packages\pkg_resources\__init__.py", line 36, in <module>
import email.parser
File "C:\Users\Administrator\AppData\Local\Temp\pip-install-ucmeohfy\email\email\parser.py", line 10, in <module>
from cStringIO import StringIO
ModuleNotFoundError: No module named 'cStringIO'
----------------------------------------
ERROR: Command errored out with exit status 1: python setup.py egg_info Check the logs for full command output.
搜寻了网上的答案,大致可以理解为python2可以这么安装,但是python3中没有 cStringIO 这个包,如果是单纯引用 StringIO 可以 使用 from io import StringIO
。
但是这种方法没用,因为这是在安装的时候出现的,我试着修改C:\Users\Administrator\AppData\Local\Temp\pip-install-ucmeohfy\email\email\parser.py
这一文件内容,但是由于是安装时出现的临时文件,所以并不能进行修改。
解决方法:
1.看到安装包的时候的第一行没有?Using cached https://files.pythonhosted.org/packages/71/e7/816030d3b0426c130040bd068be62b9213357ed02896f5d9badcf46d1b5f/email-4.0.2.tar.gz
,把这里面的地址复制到浏览器中,直接将这个gz压缩包下载下来;
2.将gz解压缩出来,这时候如果尝试使用python setup.py install
会发现报错,并没有卵用,所以看第三部;
解压后的文件:
3.压缩包的文件名应该是 email-4.0.2(版本号不同数字不同),打开文件夹后里面会有doc、email等文件夹和setup.py、testall.py等文件,这时候把time这个文件夹复制到电脑中python的lib/site-packages 文件夹中,然后就可以正常使用email这个包了;
直接将里面的email文件贴过去:
个人猜测是发包人目前只针对了python2,没有维护到python3的迁移,因为看安装文件里面的print还是python2的写法,如果有小伙伴知道其他原因或者有其他方法的请留言,一起探讨苦短的人生!