2013-12-05 7 views
16

Я нахожусь в Solaris 10 (x86).Ошибка импорта hashlib с python 2.7, но не с 2.6

До сих пор я использовал python2.6. Сегодня я установил python2.7 и у меня странные произошедшей ошибки при импорте hashlib на 2.7, но не 2.6:

Python 2.6:

[email protected] [PROD] # python2.6 -c "import hashlib" 
[email protected] [PROD] # 

Python 2.7:

[email protected] [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 не понимаю, почему у меня есть эта ошибка, так как я пытаюсь импортировать на тот же MACHINE.

Заранее благодарим за вашу помощь!

+0

Возможно потому, что ваш hashlib версия для Python только 2.6? В какой версии вы работаете? – aIKid

+0

@alKid 'hashlib' - это встроенный модуль с Python 2.5 – tyteen4a03

+0

Также дубликат http://stackoverflow.com/questions/11433108/unsupported-hash-type-when-installing-plone – tyteen4a03

ответ

15

Пакет python2.7 зависит от пакета libssl1_0_0 (openssl_1.0 runtime librairies).

Я установил его и добавил /usr/local/ssl/lib каталог в $LD_LIBRARY_PATH переменная окружения.

И теперь он отлично работает! :)

+0

whats the command to do/usr/local/ssl/lib directory в переменной $ LD_LIBRARY_PATH environmentnent – ealeon

+0

'export LD_LIBRARY_PATH ="/usr/local/ssl/lib "' –

4

такой же ошибка для меня. Мое дело было скопировано virtenv, давая мне эту ошибку на новом сервере. Работает python по умолчанию.

Я использовал

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

вы должны увидеть что-то вроде этой линии ниже в вашем 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 
... 

Так что я сделал это просто:

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

Вы можете использовать ниже команда и проверьте, какие библиотеки отсутствуют,

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

например

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

Если вы получаете выход, как показано ниже, это означает, что вам не хватает необходимых OpenSSL библиотеки

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) 
+0

Этот пример был отличной помощью! Я использовал следующее, чтобы найти все отсутствующие SO в среде paticular: 'ldd /opt/test/python/lib/python2.7/lib-dynload/*.so | grep "not found" ' –

+0

Если поддержка SSL не была скомпилирована, вы не увидите эти ссылки, но их отсутствие должно сказать вам, почему она не работает. –

 Смежные вопросы

  • Нет связанных вопросов^_^