python报错code for hash md5 was not found解决方案

    因为开发机服务器不能上网,只能手动安装Python,但是装完后import hashlib出现异常,出现不支持sha256, sha512, md5等错误,现象如下:

>>> import hashlib
ERROR:root:code for hash md5 was not found.
Traceback (most recent call last):
  File "/usr/local/python3.2/lib/python3.2/hashlib.py", line 141, in
    globals()[__func_name] = __get_hash(__func_name)
  File "/usr/local/python3.2/lib/python3.2/hashlib.py", line 91, in __get_builtin_constructor
    raise ValueError('unsupported hash type %s' % name)
ValueError: unsupported hash type md5
ERROR:root:code for hash sha1 was not found.

1.在网上查找原因,发现是因为在python编译的时候没有openssl依赖(依赖libssl.so和libcrypto.so)。

2.在检查服务环境,发现已经安装过了openssl,那么问题来了,为什么在编译python的时候没有依赖成功?于是
重新编译安装python试试,发现出错信息如下:
Failed to build these modules:
_hashlib           _ssl    

果然没有依赖上,肿么回事?

3.参考了一下网上部分解决方案,修改setup.py中查找ssl的路径,发现我的是/usr/local/ssl/lib64,而代码中是

/usr/local/ssl/lib,修正,还是不行,继续查找原因。


4.在一堆乱查之后,发现python在生成_ssl.so的命令如下:
gcc -pthread -shared build/temp.linux-x86_64-2.7/****/Python-2.7.9/Modules/_ssl.o -L/usr/local/lib -lssl -lcrypto -o build/lib.linux-x86_64-2.7/_ssl.so
holly shit,改了那么多,make的时候它还是坚持在/usr/local/lib中去找libssl.so和libcrypto.so,难怪搞了那么久都不成功。

5.最后献出我的终极方案,直接在/usr/local/lib中建立对libssl.so和libcrypto.so的软连接:

ln -s /usr/local/ssl/lib64/libssl.so.1.0.0 libssl.so     ln -s /usr/local/ssl/lib64/libcrypto.so.1.0.0 libcrypto.so

再编译,okay,搞定!



你可能感兴趣的:(python报错code for hash md5 was not found解决方案)