今天使用twisted的getPage发送https请求,结果报了错误:
1 | ImportError: No module named OpenSSL |
原因是getPage在执行过程中判断如果是https函数,会from twisted.internet import ssl
而在twisted.internet.ssl中有如下引入操作
1 | from OpenSSL import SSL |
由于python中没有安装OpenSSL模块,所以报错了。
解决方法:
安装 openssl-devel
1
yum install openssl-devel
安装 pyOpenSSL
1
yum install pyOpenSSL
安装完毕后进行验证
1
2$ python
import OpenSSL
不再报错则安装成功。
如果仍然报错, 有可能是由于重装或升级过python导致的。
继续解决:
查看pyOpenSSL安装位置:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19$ rpm -ql pyOpenSSL
/usr/lib64/python2.6/site-packages/OpenSSL
/usr/lib64/python2.6/site-packages/OpenSSL/SSL.so
/usr/lib64/python2.6/site-packages/OpenSSL/__init__.py
/usr/lib64/python2.6/site-packages/OpenSSL/__init__.pyc
/usr/lib64/python2.6/site-packages/OpenSSL/__init__.pyo
/usr/lib64/python2.6/site-packages/OpenSSL/crypto.so
/usr/lib64/python2.6/site-packages/OpenSSL/rand.so
/usr/lib64/python2.6/site-packages/OpenSSL/test
/usr/lib64/python2.6/site-packages/OpenSSL/test/__init__.py
/usr/lib64/python2.6/site-packages/OpenSSL/test/__init__.pyc
/usr/lib64/python2.6/site-packages/OpenSSL/test/__init__.pyo
/usr/lib64/python2.6/site-packages/OpenSSL/test/test_crypto.py
/usr/lib64/python2.6/site-packages/OpenSSL/test/test_crypto.pyc
/usr/lib64/python2.6/site-packages/OpenSSL/test/test_crypto.pyo
/usr/lib64/python2.6/site-packages/OpenSSL/test/test_rand.py
/usr/lib64/python2.6/site-packages/OpenSSL/test/test_rand.pyc
/usr/lib64/python2.6/site-packages/OpenSSL/test/test_rand.pyo
...发现pyOpenSSL安装位置处于
/usr/lib64/python2.6/site-packages/OpenSSL
而由于进行过升级,新的python处于/usr/local/lib/pytohn2.7
yum将OpenSSL模块装到了老的python里。将OpenSSL目录复制到
/usr/local/lib/pytohn2.7/site-packages1
cp -rf /usr/lib64/python2.6/site-packages/OpenSSL /usr/local/lib/python2.7/site-packages/
此时再进行验证,问题已解决。