使用任何 hg mercurial 命令时出现“错误:root:未找到哈希 md5 的代码”

poc*_*oca 227 python macos mercurial homebrew openssl

尝试hg在控制台上使用任何Mercurial 命令时,我不断收到此错误。我使用 Homebrew 安装了 Python,我正在运行 Mac OS Catalina v. 10.15.1。

任何参考将不胜感激。这是我得到的错误:

hg commit --amend
ERROR:root:code for hash md5 was not found.
Traceback (most recent call last):
  File "/usr/local/Cellar/python@2/2.7.15_3/Frameworks/Python.framework/Versions/2.7/lib/python2.7/hashlib.py", line 147, in <module>
    globals()[__func_name] = __get_hash(__func_name)
  File "/usr/local/Cellar/python@2/2.7.15_3/Frameworks/Python.framework/Versions/2.7/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/Cellar/python@2/2.7.15_3/Frameworks/Python.framework/Versions/2.7/lib/python2.7/hashlib.py", line 147, in <module>
    globals()[__func_name] = __get_hash(__func_name)
  File "/usr/local/Cellar/python@2/2.7.15_3/Frameworks/Python.framework/Versions/2.7/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/Cellar/python@2/2.7.15_3/Frameworks/Python.framework/Versions/2.7/lib/python2.7/hashlib.py", line 147, in <module>
    globals()[__func_name] = __get_hash(__func_name)
  File "/usr/local/Cellar/python@2/2.7.15_3/Frameworks/Python.framework/Versions/2.7/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/Cellar/python@2/2.7.15_3/Frameworks/Python.framework/Versions/2.7/lib/python2.7/hashlib.py", line 147, in <module>
    globals()[__func_name] = __get_hash(__func_name)
  File "/usr/local/Cellar/python@2/2.7.15_3/Frameworks/Python.framework/Versions/2.7/lib/python2.7/hashlib.py", line 97, 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/Cellar/python@2/2.7.15_3/Frameworks/Python.framework/Versions/2.7/lib/python2.7/hashlib.py", line 147, in <module>
    globals()[__func_name] = __get_hash(__func_name)
  File "/usr/local/Cellar/python@2/2.7.15_3/Frameworks/Python.framework/Versions/2.7/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/Cellar/python@2/2.7.15_3/Frameworks/Python.framework/Versions/2.7/lib/python2.7/hashlib.py", line 147, in <module>
    globals()[__func_name] = __get_hash(__func_name)
  File "/usr/local/Cellar/python@2/2.7.15_3/Frameworks/Python.framework/Versions/2.7/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 "/usr/local/bin/hg", line 43, in <module>
    dispatch.run()
  File "/usr/local/Cellar/mercurial/4.9/lib/python2.7/site-packages/hgdemandimport/demandimportpy2.py", line 150, in __getattr__
    self._load()
  File "/usr/local/Cellar/mercurial/4.9/lib/python2.7/site-packages/hgdemandimport/demandimportpy2.py", line 94, in _load
    _origimport, head, globals, locals, None, level)
  File "/usr/local/Cellar/mercurial/4.9/lib/python2.7/site-packages/hgdemandimport/demandimportpy2.py", line 43, in _hgextimport
    return importfunc(name, globals, *args, **kwargs)
  File "/usr/local/Cellar/mercurial/4.9/lib/python2.7/site-packages/mercurial/dispatch.py", line 625, in <module>
    class lazyaliasentry(object):
  File "/usr/local/Cellar/mercurial/4.9/lib/python2.7/site-packages/mercurial/dispatch.py", line 636, in lazyaliasentry
    @util.propertycache
  File "/usr/local/Cellar/mercurial/4.9/lib/python2.7/site-packages/hgdemandimport/demandimportpy2.py", line 150, in __getattr__
    self._load()
  File "/usr/local/Cellar/mercurial/4.9/lib/python2.7/site-packages/hgdemandimport/demandimportpy2.py", line 94, in _load
    _origimport, head, globals, locals, None, level)
  File "/usr/local/Cellar/mercurial/4.9/lib/python2.7/site-packages/hgdemandimport/demandimportpy2.py", line 43, in _hgextimport
    return importfunc(name, globals, *args, **kwargs)
  File "/usr/local/Cellar/mercurial/4.9/lib/python2.7/site-packages/mercurial/util.py", line 180, in <module>
    'md5': hashlib.md5,
  File "/usr/local/Cellar/mercurial/4.9/lib/python2.7/site-packages/hgdemandimport/demandimportpy2.py", line 151, in __getattr__
    return getattr(self._module, attr)
AttributeError: 'module' object has no attribute 'md5'
Run Code Online (Sandbox Code Playgroud)

我也尝试按照有关此问题的说明进行操作,但似乎没有任何解决方案有效

brew link openssl --force
Warning: Refusing to link macOS-provided software: openssl@1.1
If you need to have openssl@1.1 first in your PATH run:
  echo 'export PATH="/usr/local/opt/openssl@1.1/bin:$PATH"' >> ~/.zshrc

For compilers to find openssl@1.1 you may need to set:
  export LDFLAGS="-L/usr/local/opt/openssl@1.1/lib"
  export CPPFLAGS="-I/usr/local/opt/openssl@1.1/include"

For pkg-config to find openssl@1.1 you may need to set:
  export PKG_CONFIG_PATH="/usr/local/opt/openssl@1.1/lib/pkgconfig"
Run Code Online (Sandbox Code Playgroud)

Roc*_*ite 708

运行brew reinstall python@2不适用于我现有的 Python 2.7 虚拟环境。他们内部仍然存在ERROR:root:code for hash sha1 was not found错误。

我跑了之后遇到了这个问题brew upgrade openssl。这是修复方法:

$ ls /usr/local/Cellar/openssl
Run Code Online (Sandbox Code Playgroud)

...这表现了

1.0.2t
Run Code Online (Sandbox Code Playgroud)

根据现有版本,运行:

$ brew switch openssl 1.0.2t
Run Code Online (Sandbox Code Playgroud)

...这表现了

Cleaning /usr/local/Cellar/openssl/1.0.2t
Opt link created for /usr/local/Cellar/openssl/1.0.2t
Run Code Online (Sandbox Code Playgroud)

之后,在 Python 2.7 virtualenv 中运行以下命令:

(my-venv) $ python -c "import hashlib;m=hashlib.md5();print(m.hexdigest())"
Run Code Online (Sandbox Code Playgroud)

...这表现了

d41d8cd98f00b204e9800998ecf8427e
Run Code Online (Sandbox Code Playgroud)

没有更多的错误。

  • 这对我的 mac catalina 更新或者 bash -&gt; zsh 有帮助,其中大量类似的东西都被破坏了。 (21认同)
  • 我没有 1.0.2q 但用 1.0.2r 做同样的事情也有效 (13认同)
  • @FlorentRoques那是因为您将拥有与示例相同的版本。在我的例子中 `ls /usr/local/Cellar/openssl` 返回了 `1.0.2s` 所以我需要运行 `brew switch openssl 1.0.2s` (12认同)
  • `brew switch` 已删除 https://github.com/Homebrew/discussions/discussions/339 (5认同)
  • 是的。这对我有用。我花了好几天的时间来处理这个问题,并且担心必须重新镜像我的机器。我多次尝试重新安装 python@2 但仍然无法解决问题。这绝对有效。MacOS 莫哈韦 10.14.6。 (3认同)
  • 步骤无懈可击。 (2认同)
  • 在没有“brew switch”且本地缺少“1.0.2t”的情况下,我使用了“brew install openssl@1.0”,它安装了“1.0.2t”。您可能需要“brew tap rbenv/tap”来获取配方。之后我需要将 openssl 1.0 添加到我的路径中。对我来说,这是 `echo 'export PATH="/usr/local/opt/openssl@1.0/bin:$PATH"' &gt;&gt; ~/.zshrc`。 (2认同)

poc*_*oca 99

通过首先取消链接 openssl 设法解决了这个问题

brew unlink openssl
Run Code Online (Sandbox Code Playgroud)

然后重新安装python

brew reinstall python@2
Run Code Online (Sandbox Code Playgroud)

我还注意到,在运行 'brew doctor' 时,有一个与 /usr/local/include/node/ 中的 openssl 文件夹相关的警告。我在运行上述命令之前删除了这个文件夹(不确定是否相关)

  • 截至 2020 年 2 月 10 日,python@2 已从自制程序中删除,此答案将不起作用。请参阅@Rockallite 的上述答案,它对我来说非常有效。 (8认同)
  • 我没有链接 openssl 但重新安装 python 为我做到了。谢谢! (3认同)
  • 感谢@Paul 的更新,我将上述答案标记为正确的答案 (2认同)

小智 53

我的情况是,当我安装 django Web 应用程序的依赖项时,它会弄乱环境。当我输入时cd,它显示相同的错误。

问题是openssl图书馆,它找不到正确的图书馆。

如果您使用的是 Macintosh,则可以键入

ls /usr/local/Cellar/openssl

查看所有版本,

brew switch openssl 1.0.XXXX

选择可用的 openssl 版本。

然后错误消失了:)

  • 一行````bash ls /usr/local/Cellar/openssl | xargs 酿造开关 openssl``` (10认同)

aje*_*jet 39

只需卸载python2

$ brew uninstall python@2

如果有任何错误:

$ brew uninstall --ignore-dependencies python@2

  • 我笑了,但作为对菜鸟的警告——不要这样做。 (2认同)

use*_*932 6

我的问题是pyenv安装并指向旧的 python 2 版本

卸载python@2(python2自2020年1月1日起停产)

$ brew uninstall python@2
Uninstalling /usr/local/Cellar/python@2/2.7.15_1... (4,169 files, 76.0MB)
Run Code Online (Sandbox Code Playgroud)

然后

$ pyenv versions
  system
* 2.7.12 (set by /Users/admin/.python-version)
  3.4.5
  3.7.7

$ pyenv local system
$ pyenv global system
Run Code Online (Sandbox Code Playgroud)