相关文章推荐
健壮的皮带  ·  Java 导出 CSV ...·  1 年前    · 
深情的楼房  ·  web.config添加identity ...·  1 年前    · 
登录

在python 2.7中导入hashlib时出错,但在2.6中不是

内容来源于 Stack Overflow,遵循 CC BY-SA 4.0 许可协议进行翻译与使用。IT领域专用引擎提供翻译支持

腾讯云小微IT领域专用引擎提供翻译支持

原文
Stack Overflow用户 提问于2013-12-05

我在Solaris10 (x86)上。

到目前为止,我使用的是python2.6。今天,我安装了python2.7,在2.7上导入hashlib时出现了一个奇怪的错误,但在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

我不明白为什么会出现这个错误,因为我在同一台机器上尝试导入

提前感谢您的帮助!

浏览 688 关注 0 得票数 31
  • 得票数为Stack Overflow原文数据
原文
已采纳
回答于2013-12-06
得票数 24

Openssl_1.0 2.7包依赖于python2.7包(python2.7运行时库)。

我安装了它,并在 $LD_LIBRARY_PATH 环境变量中添加了 /usr/local/ssl/lib 目录。

现在它完美地工作了!:)

修改于2015-05-18
  • 该回答已被编辑
  • 回答者: Stack Overflow用户
  • 回答时间: 2014-07-26 06:30
得票数 14

我也犯了同样的错误。我的案例是一个复制的 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
修改于2015-05-18
  • 该回答已被编辑
  • 回答者: Stack Overflow用户
  • 回答时间: 2015-02-24 10:48
得票数 11

您可以使用下面的命令并检查缺少哪些库,

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

e.g

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)