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 "<string>", 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的寫法,如果有小夥伴知道其他原因或者有其他方法的請留言,一起探討苦短的人生!