写了一个监听网页内容变化发邮件通知的py脚本,在本地Windows运行正常,而放到阿里云CentOS服务器上出现"smtplib模块中没有'SMTP_SSL'成员"的Error。
起初怀疑服务器上有多个版本Python(此处是2.7与3.6)是不是依赖混乱,但是一想是指定python3执行应该不会出现这么low的问题,并且后面打印依赖路径也证实没有这方面问题。
一切问题看了源码均能迎刃而解,果断打开了了smtplib.py文件
发现这里做了判断,当_have_ssl为True才会定义SMTP_SSL类,反手就看这个变量是如何赋值
原来会先尝试引入ssl,并且把异常吃了所以表面上看不出错误。那么就安装openssl吧,然而并没有什么X用。经过查询发现需要openssl做前置重装python3,方法如下:
1.进入Python3解压文件中的Module目录
Benz]# cd Python-3.6.6/Module
2.修改Setup文件
Benz]# vim Setup
3.取消一些配置的注释,如下图(已撤销注释)
4. 回到解压目录重装python
5.验证(没有报错,成功引入)
此后py脚本成功运行