【问题标题】:"ERROR:root:code for hash md5 was not found" when using any hg mercurial commands使用任何 hg mercurial 命令时“错误:root:未找到哈希 md5 的代码”
【发布时间】:2020-04-03 18:09:29
【问题描述】:

当尝试在控制台上使用任何 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'

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

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"

【问题讨论】:

  • 缺少第 1 期的链接。
  • MacOS 有什么解决方案吗?我确实尝试了这些解决方案,但它们都不起作用。我不断收到同样的错误。当我在粘贴问题时尝试链接 openssl 时,我将错误粘贴在那里。我也尝试运行这 4 个命令,但什么也没发生: echo 'export PATH="/usr/local/opt/openssl@1.1/bin:$PATH"' >> ~/.zshrc export LDFLAGS="-L/usr/local /opt/openssl@1.1/lib" export CPPFLAGS="-I/usr/local/opt/openssl@1.1/include" export PKG_CONFIG_PATH="/usr/local/opt/openssl@1.1/lib/pkgconfig"
  • 奇怪的是,我在 Macvim 中遇到了与 YCM 相同的问题,而这个 answer 解决了我的问题。

标签: python macos openssl mercurial homebrew


【解决方案1】:

运行 brew reinstall python@2 不适用于我现有的 Python 2.7 虚拟环境。里面还有ERROR:root:code for hash sha1 was not found错误。

我在运行brew upgrade openssl 后遇到了这个问题。这是修复:

$ ls /usr/local/Cellar/openssl

...显示

1.0.2t

根据现有版本,运行:

$ brew switch openssl 1.0.2t

...显示

Cleaning /usr/local/Cellar/openssl/1.0.2t
Opt link created for /usr/local/Cellar/openssl/1.0.2t

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

(my-venv) $ python -c "import hashlib;m=hashlib.md5();print(m.hexdigest())"

...显示

d41d8cd98f00b204e9800998ecf8427e

没有更多错误。

【讨论】:

  • 这帮助我完成了 mac catalina 更新,或者可能是 bash -> zsh,其中很多类似的东西都被破坏了。
  • 我没有 1.0.2q 但对 1.0.2r 做同样的事情也有效
  • 是的。这对我有用。我已经为此花费了几天时间,并且担心不得不重新映像我的机器。我曾多次尝试重新安装 python@2,但仍然无法解决问题。这个绝对有效。 MacOS Mojave 10.14.6.
  • @FlorentRoques 那是因为您将拥有与示例相同的版本。就我而言,ls /usr/local/Cellar/openssl 返回了1.0.2s,所以我需要运行brew switch openssl 1.0.2s
【解决方案2】:

通过首先取消链接 openssl 来解决这个问题

brew unlink openssl

然后reinstalling python

brew reinstall python@2

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

【讨论】:

  • 我没有链接 openssl 但重新安装 python 为我做了。谢谢!
  • 我不得不用 brew 重新链接 azure-cli
  • 自 2020 年 2 月 10 日起,python@2 已从自制软件中删除,此答案将不起作用。请参阅@Rockallite 的上述答案,这对我来说非常有效。
  • 感谢@Paul 的更新,我将上面的答案标记为正确的答案
【解决方案3】:

对我来说,当我安装 django web 应用程序的依赖项时,它会弄乱环境。当我输入cd 时,它显示相同的错误。

问题是openssl 库,它找不到正确的库。

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

ls /usr/local/Cellar/openssl

查看所有版本,

brew switch openssl 1.0.XXXX

选择可用的 openssl 版本。

然后错误就消失了:)

【讨论】:

  • 一个班轮bash ls /usr/local/Cellar/openssl | xargs brew switch openssl
  • 在我使用@poca 的答案然后在上面的答案之后工作
  • 非常感谢,你是救命稻草 - 经过一个多小时的努力,终于成功了。
【解决方案4】:

只需卸载python2

$ brew uninstall python@2

如果有任何错误:

$ brew uninstall --ignore-dependencies python@2

【讨论】:

  • 我笑了,但作为对新手的警告-不要这样做。
  • 在 MacOS 上为我工作?
【解决方案5】:

我的问题是安装了 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)

然后

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

$ pyenv local system
$ pyenv global system

【讨论】:

  • 游戏有点晚了,但谢谢你,你的解决方案完美!
  • 这对我很有用!谢谢。我花了很多时间安装东西,只花了两秒钟 ?
【解决方案6】:

我最近(2020 年 5 月)在使用 Google 的 GCP CLI 时遇到了这个问题。它也适用于过时的 Python 2.7。

这是一个无聊的 Python 2 安装问题。 mBrew 不再优雅地正确安装 Python 2,因为没有人关心 abondonware。

Conda 仍然在环境中安装 Python 2;我做到了。

【讨论】:

    【解决方案7】:

    下一个解决方案适用于 MacOS Catalina:

    1. 取消链接 openssl
    brew unlink openssl
    
    1. 重新安装python 2.7(从自制软件中删除,无法通过brew install python@2安装)
    brew tap-new <user>/homebrew-python2
    brew extract python@2 <user>/homebrew-python2
    brew reinstall /usr/local/Homebrew/Library/Taps/<user>/homebrew-python2/Formula/python@2.7.17.rbl
    

    【讨论】:

    • 我做了同样的事情,但是第 2 步)我做了brew remove python@2 :) macOS Catalina 内置了 Python 2.7,然后直接依赖它似乎不太容易出现问题。对我来说,通过 brew 支持 python 似乎总是在过去 xD 的某个地方引起一些问题
    【解决方案8】:

    就我而言,我只是使用pyenv重新安装python2

    pyenv uninstall 2.7.18
    pyenv install 2.7.18
    

    然后一切似乎都挂钩了。

    【讨论】:

      【解决方案9】:

      我的问题是安装了多个版本的 python(python 仍然是 python2 的别名,但我希望 pip 使用 python3)。我的系统上还安装了python3 bin

      # use pip with python3
      $ python3 -m pip install fish
      

      详情请见Dealing with multiple Python versions and PIP?

      【讨论】:

        【解决方案10】:

        当我导入 hashlib 时,我会看到一条错误消息,指出未找到哈希 md5。

        我能够通过首先取消链接 openssl 来解决这个问题: brew unlink openssl

        然后我使用 MacPorts 卸载了 python 2.7: sudo 端口卸载 python27

        然后我使用 MacPorts 安装了 python 2.7: sudo 端口安装 python27

        现在导入 hashlib 可以了 :)

        【讨论】:

          【解决方案11】:

          在 macOS Mojave (10.14.6) 上,这对我有用:

          • file 保存为当前目录中的python@2.rb。
          • brew 重新安装 python@2.rb
          • 我使用的是虚拟环境,因此我必须将它们链接回 /usr/local/bin/python/usr/local/bin/pip 以获取 pythonpip 二进制文件。

          【讨论】:

            【解决方案12】:

            安装openssl 后我遇到了同样的问题。这个answer 对我没有帮助,但是在手动链接libcrypto.1.1.dyliblibssl.1.1.dylib 之后,一切都开始工作了。在我的情况下是:

            ln -s /usr/local/opt/openssl/lib/libcrypto.1.1.dylib /usr/local/lib
            ln -s /usr/local/opt/openssl/lib/libssl.1.1.dylib /usr/local/lib
            

            【讨论】:

              【解决方案13】:

              就我而言,我的环境使用的是 python 2.7.15。当我将我的 pyenv 版本切换到 2.7.18 时,它就可以工作了。

              【讨论】:

                【解决方案14】:

                这为我解决了问题,我使用的是端口而不是 brew:

                sudo port upgrade openssl

                【讨论】:

                  猜你喜欢
                  • 2017-06-07
                  • 2020-03-22
                  • 2020-05-19
                  • 2020-05-30
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  相关资源
                  最近更新 更多