在使用python virtual environment的smtplib的時候,發現smtplib.SMTP_SSL('smtp.163.com', 465)報錯:
>>> import smtplib
>>> smtplib.SMTP_SSL('smtp.163.com', 465)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'module' object has no attribute 'SMTP_SSL'
但是在非venv下沒問題,參考了:https://exp.newsmth.net/topic/article/e35eea6efe28f9c03ddae30f6a2fba52,發現可能是import ssl出錯,於是import ssl,報錯:
>>> import ssl
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib/python2.7/ssl.py", line 61, in <module>
import _ssl # if we can't import it, let the error propagate
ImportError: /lib/x86_64-linux-gnu/libssl.so.1.0.0: version `OPENSSL_1.0.2' not found (required by /home/myname/venv/lib/python2.7/lib-dynload/_ssl.x86_64-linux-gnu.so)
到這裏大概知道是因爲少了ssl庫造成的,於是把這個庫複製到相應的目錄下就行了:
cp /usr/lib/python2.7/lib-dynload/_ssl.x86_64-linux-gnu.so ~/venv/lib/python2.7/lib-dynload
再次使用smtplib.SMTP_SSL('smtp.163.com', 465),無報錯。