Error importing hashlib with python 2.7 but not with 2.6

匿名 (未验证) 提交于 2019-12-03 02:11:02

问题:

I'm on Solaris 10 (x86).

Until now, I was using python2.6. Today, I installed python2.7 and I have a weird error occuring when importing hashlib on 2.7, but not on 2.6:

Python 2.6:

root@myserver [PROD] # python2.6 -c "import hashlib" root@myserver [PROD] # 

Python 2.7:

root@myserver [PROD] # python2.7 -c "import hashlib" ERROR:root:code for hash md5 was not found. Traceback (most recent call last):   File "/usr/local/lib/python2.7/hashlib.py", line 139, in <module>     globals()[__func_name] = __get_hash(__func_name)   File "/usr/local/lib/python2.7/hashlib.py", line 91, in __get_builtin_constructor     raise ValueError('unsupported hash type ' + name) ValueError: unsupported hash type md5 ERROR:root:code for hash sha1 was not found. Traceback (most recent call last):   File "/usr/local/lib/python2.7/hashlib.py", line 139, in <module>     globals()[__func_name] = __get_hash(__func_name)   File "/usr/local/lib/python2.7/hashlib.py", line 91, in __get_builtin_constructor     raise ValueError('unsupported hash type ' + name) ValueError: unsupported hash type sha1 ERROR:root:code for hash sha224 was not found. Traceback (most recent call last):   File "/usr/local/lib/python2.7/hashlib.py", line 139, in <module>     globals()[__func_name] = __get_hash(__func_name)   File "/usr/local/lib/python2.7/hashlib.py", line 91, in __get_builtin_constructor     raise ValueError('unsupported hash type ' + name) ValueError: unsupported hash type sha224 ERROR:root:code for hash sha256 was not found. Traceback (most recent call last):   File "/usr/local/lib/python2.7/hashlib.py", line 139, in <module>     globals()[__func_name] = __get_hash(__func_name)   File "/usr/local/lib/python2.7/hashlib.py", line 91, in __get_builtin_constructor     raise ValueError('unsupported hash type ' + name) ValueError: unsupported hash type sha256 ERROR:root:code for hash sha384 was not found. Traceback (most recent call last):   File "/usr/local/lib/python2.7/hashlib.py", line 139, in <module>     globals()[__func_name] = __get_hash(__func_name)   File "/usr/local/lib/python2.7/hashlib.py", line 91, in __get_builtin_constructor     raise ValueError('unsupported hash type ' + name) ValueError: unsupported hash type sha384 ERROR:root:code for hash sha512 was not found. Traceback (most recent call last):   File "/usr/local/lib/python2.7/hashlib.py", line 139, in <module>     globals()[__func_name] = __get_hash(__func_name)   File "/usr/local/lib/python2.7/hashlib.py", line 91, in __get_builtin_constructor     raise ValueError('unsupported hash type ' + name) ValueError: unsupported hash type sha512

I don't understand why I have this error since I'm trying the import ON THE SAME MACHINE.

Thanks in advance for your help!

回答1:

The python2.7 package is dependent to the libssl1_0_0 package (openssl_1.0 runtime librairies).

I installed it, and added the /usr/local/ssl/lib directory in $LD_LIBRARY_PATH environnent variable.

And now it works perfectly! :)



回答2:

You can use below command and check which libraries are missing,

ldd /path/to/Python-Library/_hashlibmodule.so

e.g

ldd /usr/local/lib/python2.7/_hashlibmodule.so

If you get output like below, that means you are missing necessary openssl libraries

    linux-vdso.so.1 =>  (0x00007fffd6f6a000)     libssl.so.6 => not found     libcrypto.so.6 => not found     libpython2.7.so.1.0 => /lib64/libpython2.7.so.1.0 (0x00007ffb18b54000)     libpthread.so.0 => /lib64/libpthread.so.0 (0x00007ffb18937000)     libc.so.6 => /lib64/libc.so.6 (0x00007ffb185a2000)     libdl.so.2 => /lib64/libdl.so.2 (0x00007ffb1839e000)     libutil.so.1 => /lib64/libutil.so.1 (0x00007ffb1819b000)     libm.so.6 => /lib64/libm.so.6 (0x00007ffb17f16000)     /lib64/ld-linux-x86-64.so.2 (0x0000003e0a000000)


回答3:

same error for me. My case was a copied virtenv giving me this error on a new server. The default python was working.

I used

python2.7 -v -c "import hashlib" 2> output.txt

you should see something like this line below in your output.txt:

import hashlib # precompiled from hashlib.pyc dlopen("/path/to/virtenv/lib/python2.7/lib-dynload/_hashlib.so", 2);  ldd /path/to/virtenv/lib/python2.7/lib-dynload/_hashlib.so ...    libssl.so.0.9.8 => not found    libcrypto.so.0.9.8 => not found ...

So what I did is simply :

cp /usr/lib/python2.7/lib-dynload/_hashlib.so /*path-to-virtenv*/manager/lib/python2.7/lib-dynload/_hashlib.so


标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!