Python 2.7不再起作用:无法导入名称md5

33

昨天我在我的服务器上(ubuntu 14.04)安装了Python 3.6.3版本,现在我不能运行Python 2.7版本(无论是在虚拟环境中还是在主环境中)。

我在谷歌上寻找了解决方法,但没有成功。

我试着按照别人的建议重新安装了openssl。

有人能帮帮我吗?我快要疯了。

--->每当我尝试执行Python脚本(或pip)时,就会出现以下错误消息:

*ERROR:root:code for hash md5 was not found.
Traceback (most recent call last):
 File "/usr/local/lib/python2.7/hashlib.py", line 147, in <module>
    globals()[__func_name] = __get_hash(__func_name)
  File "/usr/local/lib/python2.7/hashlib.py", line 97, 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 147, in <module>
    globals()[__func_name] = __get_hash(__func_name)
  File "/usr/local/lib/python2.7/hashlib.py", line 97, 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 147, in <module>
    globals()[__func_name] = __get_hash(__func_name)
  File "/usr/local/lib/python2.7/hashlib.py", line 97, 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 147, in <module>
    globals()[__func_name] = __get_hash(__func_name)
  File "/usr/local/lib/python2.7/hashlib.py", line 97, in     __get_builtin_constructoremphasized text
    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 147, in <module>
globals()[__func_name] = __get_hash(__func_name)
  File "/usr/local/lib/python2.7/hashlib.py", line 97, 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 147, in <module>
    globals()[__func_name] = __get_hash(__func_name)
  File "/usr/local/lib/python2.7/hashlib.py", line 97, in     __get_builtin_constructor
    raise ValueError('unsupported hash type ' + name)
ValueError: unsupported hash type sha512
Traceback (most recent call last):
  File "/var/www/QuantEngine/prod/QuantScripts/QuantEngineCli.py", line     11, in <module>
    from services import DataStructureManager, DatabaseFsHelper, Orchestra, BacktestManager
  File "/var/www/QuantEngine/prod/QuantScripts/services/__init__.py", line 8, in <module>
    from BuySellManager import BuySellManager
  File "/var/www/QuantEngine/prod/QuantScripts/services/BuySellManager.py", line 1, in <module>
    import requests
  File "/var/www/QuantEngine/venv/lib/python2.7/site-    packages/requests/__init__.py", line 43, in <module>
    import urllib3
  File "/var/www/QuantEngine/venv/lib/python2.7/site-    packages/urllib3/__init__.py", line 8, in <module>
    from .connectionpool import (
  File "/var/www/QuantEngine/venv/lib/python2.7/site-    packages/urllib3/connectionpool.py", line 29, in <module>
    from .connection import (
  File "/var/www/QuantEngine/venv/lib/python2.7/site-packages/urllib3/connection.py", line 39, in <module>
from .util.ssl_ import (
  File "/var/www/QuantEngine/venv/lib/python2.7/site-    packages/urllib3/util/__init__.py", line 6, in <module>
    from .ssl_ import (
  File "/var/www/QuantEngine/venv/lib/python2.7/site-    packages/urllib3/util/ssl_.py", line 7, in <module>
    from hashlib import md5, sha1, sha256
ImportError: cannot import name md5*

这个消息里是不是有多个跟踪信息?你尝试过在当前目录下使用 pip install hashlib 安装 Python2.7 吗?并且你的 Python2.7 目录下是否有 pip.exe 文件? - IMCoins
当我尝试使用pip安装hashlib时,我会得到这个traceback。而且我在Ubuntu上,所以我没有pip.exe。 - JulienCoo
尝试启动 _python_,在控制台中输入 import hashlib,然后输入 dir(hashlib)。如果一切正常,则输入 hashlib._hashlib。现在作为测试:hashlib.sha1("").hexdigest(),然后输入 hashlib.sha384("").hexdigest()。其中至少一个会失败。更进一步:import sslssl.OPENSSL_VERSION,以查看正在自动使用的 OpenSSL 版本。之后再对 _hashlib 动态模块执行 ldd(在我的系统上是:*/usr/lib/python2.7/lib-dynload/_hashlib.x86_64-linux-gnu.so*)。 - CristiFati
4个回答

44

我在 macOS 上遇到了同样的问题。

brew reinstall python@2 解决了这个问题。

也许你可以尝试重新安装 Python。


24
如果仍然无法解决问题,您可能需要运行以下命令:curl https://raw.githubusercontent.com/Homebrew/homebrew-core/94d572a132a63651739fef1931f540404b7eaa31/Formula/python%402.rb > python@2.rb; brew install python@2.rb - trusktr
3
@trusktr,再次向您的解决方案致敬! - Chas Brown
2
@trusktr 太棒了,感谢您修复我的 Python 2.7,在运行 virtualenv venv 时出现的 MD5 错误。问题已经解决了。 - vintagexav
1
@trusktr 的解决方案对我也起作用了,尽管我确实不得不将 install python@2.rb 更改为 upgrade python@2.rb - taylor
按照此SO帖子中的重新安装说明:链接,再加上openssl@1.1的重新安装,成功解决了hashlib错误。 - Wayne

3
在这篇文章中,可能有一个解决方案: python2.7包依赖于libssl1_0_0包(openssl_1.0运行库)。
所以你需要安装它,并将/usr/local/ssl/lib目录添加到$LD_LIBRARY_PATH环境变量中。

是的,我尝试过了,但没有成功。我的服务器上没有 _hashlibmodule.so 模块,我正在努力找回它... - JulienCoo
你能试一下这个命令吗:python2.7 -v -c "import hashlib" 2> output.txt。然后复制粘贴缺失的内容。 - Vasily Bronsky
由于某些原因,我失去了SSH访问权限。我正在构建一个新的服务器,并将尝试重新启动该服务器(gunicorn仍在运行)。 - JulienCoo

0

我在 macOS 上遇到了同样的问题,使用 brew reinstall python@2 命令无法解决。

然后我使用了以下命令,对我有用。

brew reinstall https://raw.githubusercontent.com/Homebrew/homebrew-core/94d572a132a63651739fef1931f540404b7eaa31/Formula/python%402.rb


0

我通过卸载Homebrew Python 2.7并安装来自python.org的Python 2.7.18解决了这个问题。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接