"ERROR:root:code for hash md5 was not found" when using any hg mercurial commands
"ERROR:root:code for hash md5 was not found" when using any hg mercurial commands
尝试在控制台上使用任何 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'
我也尝试按照有关此问题的说明进行操作,但 none 的解决方案似乎有效
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"
设法通过首先取消链接 openssl 来解决此问题
brew unlink openssl
brew reinstall python@2
我还注意到 运行 'brew doctor' 时出现与 /usr/local/include/node/ 中发现的 openssl 文件夹相关的警告。我在 运行 上述命令之前删除了这个文件夹(不确定是否相关)
运行 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
没有更多错误。
我的情况是,当我安装 django 网络应用程序的依赖项时,它弄乱了环境。当我键入 cd
时,它显示相同的错误。
问题是 openssl
库,找不到正确的库。
如果您使用的是 Macintosh,您可以键入
ls /usr/local/Cellar/openssl
查看所有版本,
brew switch openssl 1.0.XXXX
选择可用的 openssl 版本。
然后错误消失:)
当我导入 hashlib 时,我会看到一条错误消息,指出找不到哈希 md5。
我能够通过首先取消链接 openssl 来解决这个问题:
brew unlink openssl
然后我使用 MacPorts 卸载了 python 2.7:
sudo 端口卸载 python27
然后我使用 MacPorts 安装了 python 2.7:
sudo 端口安装 python27
现在可以导入 hashlib 了:)
只需卸载python2
$ brew uninstall python@2
如有错误:
$ brew uninstall --ignore-dependencies python@2
我最近(2020 年 5 月)在使用 Google 的 GCP CLI 时遇到了这个问题。它也适用于过时的 Python 2.7.
这是一个令人厌烦的 Python2 安装问题。 mBrew 不再正确安装 Python 2,因为没有人关心 abondonware。
Conda 仍然在一个环境中安装Python2;我做到了。
我的问题是安装了多个版本的 python(python 仍然是 python2 的别名,但我希望 pip 使用 python3)。我的系统上也安装了一个 python3
bin
# use pip with python3
$ python3 -m pip install fish
详见Dealing with multiple Python versions and PIP?
下一个解决方案适用于 MacOS Catalina:
- 取消链接 openssl
brew unlink openssl
- 重新安装 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
在 macOS Mojave (10.14.6) 上,这对我有用:
- 将 file 保存为当前目录中的 python@2.rb。
- brew 重新安装 python@2.rb
- 我使用的是虚拟环境,所以我不得不将它们 link 返回
/usr/local/bin/python
和 /usr/local/bin/pip
python
和 pip
二进制文件。
安装后 openssl
我遇到了同样的问题。 对我没有帮助,但是在手动链接 libcrypto.1.1.dylib
和 libssl.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
我的问题是安装了 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
对于我的情况,我只是使用 pyenv
重新安装 python2
pyenv uninstall 2.7.18
pyenv install 2.7.18
然后一切似乎都挂钩了。
就我而言,我的环境使用的是 python 2.7.15。当我将 pyenv 版本切换到 2.7.18 时,它就可以正常工作了。
这为我修复了它,我使用端口而不是 brew:
sudo port upgrade openssl
一个原因:需要较旧的 libssl
发生此错误时,Python 无法导入 _hashlib.py 模块。原因之一是 libssl 在版本转换期间更改了它的 ABI。这至少会影响 Python2.7.
解决方法:下载libssl version 1.1.0,在不同的位置编译安装。然后在配置过程中告诉 python 使用这个旧的 libssl 库。
对我来说,./configure --prefix=/home/anyuser/python 之类的非标准前缀对于 python 代码树就足够了(我将 libssl 安装到/usr/local),因为在配置和编译过程中会自动找到并使用通常位置 (/usr/local) 中并行安装的旧 libssl 库。
这是一个很好的例子,说明了为什么要同时拥有 /usr 和 /usr/local 目录。我一直想知道这一点。 /usr 用于标准系统内容,/usr/local 用于其他并行内容。
编译 python2.7 后,终端中会出现一个摘要,告诉您在 compilaton/linking 期间出现了什么问题。应该不会再有遗漏 _hashlib 的迹象了。
尝试在控制台上使用任何 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'
我也尝试按照有关此问题的说明进行操作,但 none 的解决方案似乎有效
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"
设法通过首先取消链接 openssl 来解决此问题
brew unlink openssl
brew reinstall python@2
我还注意到 运行 'brew doctor' 时出现与 /usr/local/include/node/ 中发现的 openssl 文件夹相关的警告。我在 运行 上述命令之前删除了这个文件夹(不确定是否相关)
运行 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
没有更多错误。
我的情况是,当我安装 django 网络应用程序的依赖项时,它弄乱了环境。当我键入 cd
时,它显示相同的错误。
问题是 openssl
库,找不到正确的库。
如果您使用的是 Macintosh,您可以键入
ls /usr/local/Cellar/openssl
查看所有版本,
brew switch openssl 1.0.XXXX
选择可用的 openssl 版本。
然后错误消失:)
当我导入 hashlib 时,我会看到一条错误消息,指出找不到哈希 md5。
我能够通过首先取消链接 openssl 来解决这个问题: brew unlink openssl
然后我使用 MacPorts 卸载了 python 2.7: sudo 端口卸载 python27
然后我使用 MacPorts 安装了 python 2.7: sudo 端口安装 python27
现在可以导入 hashlib 了:)
只需卸载python2
$ brew uninstall python@2
如有错误:
$ brew uninstall --ignore-dependencies python@2
我最近(2020 年 5 月)在使用 Google 的 GCP CLI 时遇到了这个问题。它也适用于过时的 Python 2.7.
这是一个令人厌烦的 Python2 安装问题。 mBrew 不再正确安装 Python 2,因为没有人关心 abondonware。
Conda 仍然在一个环境中安装Python2;我做到了。
我的问题是安装了多个版本的 python(python 仍然是 python2 的别名,但我希望 pip 使用 python3)。我的系统上也安装了一个 python3
bin
# use pip with python3
$ python3 -m pip install fish
详见Dealing with multiple Python versions and PIP?
下一个解决方案适用于 MacOS Catalina:
- 取消链接 openssl
brew unlink openssl
- 重新安装 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
在 macOS Mojave (10.14.6) 上,这对我有用:
- 将 file 保存为当前目录中的 python@2.rb。
- brew 重新安装 python@2.rb
- 我使用的是虚拟环境,所以我不得不将它们 link 返回
/usr/local/bin/python
和/usr/local/bin/pip
python
和pip
二进制文件。
安装后 openssl
我遇到了同样的问题。 libcrypto.1.1.dylib
和 libssl.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
我的问题是安装了 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
对于我的情况,我只是使用 pyenv
pyenv uninstall 2.7.18
pyenv install 2.7.18
然后一切似乎都挂钩了。
就我而言,我的环境使用的是 python 2.7.15。当我将 pyenv 版本切换到 2.7.18 时,它就可以正常工作了。
这为我修复了它,我使用端口而不是 brew:
sudo port upgrade openssl
一个原因:需要较旧的 libssl
发生此错误时,Python 无法导入 _hashlib.py 模块。原因之一是 libssl 在版本转换期间更改了它的 ABI。这至少会影响 Python2.7.
解决方法:下载libssl version 1.1.0,在不同的位置编译安装。然后在配置过程中告诉 python 使用这个旧的 libssl 库。
对我来说,./configure --prefix=/home/anyuser/python 之类的非标准前缀对于 python 代码树就足够了(我将 libssl 安装到/usr/local),因为在配置和编译过程中会自动找到并使用通常位置 (/usr/local) 中并行安装的旧 libssl 库。
这是一个很好的例子,说明了为什么要同时拥有 /usr 和 /usr/local 目录。我一直想知道这一点。 /usr 用于标准系统内容,/usr/local 用于其他并行内容。
编译 python2.7 后,终端中会出现一个摘要,告诉您在 compilaton/linking 期间出现了什么问题。应该不会再有遗漏 _hashlib 的迹象了。