Reputation: 3708
When trying to use any hg
Mercurial commands on the console, I keep getting this error.
I installed Python using Homebrew and I am running Mac OS Catalina v. 10.15.1.
Any reference would be appreciated. Here is the error I'm getting:
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'
I also tried following the instruction on this issue but none of the solutions seem to work
brew link openssl --force
Warning: Refusing to link macOS-provided software: [email protected]
If you need to have [email protected] first in your PATH run:
echo 'export PATH="/usr/local/opt/[email protected]/bin:$PATH"' >> ~/.zshrc
For compilers to find [email protected] you may need to set:
export LDFLAGS="-L/usr/local/opt/[email protected]/lib"
export CPPFLAGS="-I/usr/local/opt/[email protected]/include"
For pkg-config to find [email protected] you may need to set:
export PKG_CONFIG_PATH="/usr/local/opt/[email protected]/lib/pkgconfig"
Upvotes: 239
Views: 140593
Reputation: 11
On macOS Sonoma (14.5), This worked for me: download the last release of python 2 from this website
Upvotes: 1
Reputation: 35914
My problem was multiple versions of python installed (python was still aliased to python2 but i wanted pip to use python3). i also have a python3
bin installed on my system
$ python -V
Python 2
# use pip with python3
$ python3 -m pip install fish
see Dealing with multiple Python versions and PIP? for details
Upvotes: 3
Reputation: 182
One reason: an older libssl is needed
When this error occurs, Python is not able to import the _hashlib.py module. One reason for this is libssl changing its ABI during version transition. This affects at least Python2.7.
Solution: Download libssl version 1.1.0, compile and install it in a different location. Then tell python during its configure process to use this old libssl library.
For me a non standard prefix like ./configure --prefix=/home/anyuser/python for the python code tree was sufficient (i installed libssl to /usr/local), as the parallel installed old libssl library in a usual place (/usr/local) was automatically found and used during the configuration and compile process.
This is a good example for why having /usr and /usr/local directories in parallel. I always wondered about that. /usr for the standard system stuff, /usr/local for additional parallel things.
After compiling python2.7 there appears a summary in the terminal where it tells you what went wrong during compilaton/linking. There should be no sign of a missed _hashlib anymore.
Upvotes: 0
Reputation: 7098
This fixed it for me, I use port not brew:
sudo port upgrade openssl
Upvotes: 0
Reputation: 469
In my case, my environment was using python 2.7.15. When I switched my pyenv version to 2.7.18 it just worked.
Upvotes: 0
Reputation: 10949
For my case, I just reinstall python2 using pyenv
pyenv uninstall 2.7.18
pyenv install 2.7.18
then everything seems to hooks up.
Upvotes: 5
Reputation: 7337
My problem was having pyenv
installed and pointing to an old python 2 version
Uninstall python@2 (python2 was EOL since Jan 1st, 2020)
$ brew uninstall python@2
Uninstalling /usr/local/Cellar/python@2/2.7.15_1... (4,169 files, 76.0MB)
then
$ pyenv versions
system
* 2.7.12 (set by /Users/admin/.python-version)
3.4.5
3.7.7
$ pyenv local system
$ pyenv global system
Upvotes: 6
Reputation: 728
After installing openssl
I got the same problem. This answer didn't help me, but after manual linking of libcrypto.1.1.dylib
and libssl.1.1.dylib
everything start working. In my case it was:
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
Upvotes: 0
Reputation: 183
On macOS Mojave (10.14.6), this worked for me:
/usr/local/bin/python
and /usr/local/bin/pip
for python
and pip
binaries.Upvotes: 0
Reputation: 1417
The next solution worked for me on MacOS Catalina:
brew unlink openssl
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/[email protected]
Upvotes: 3
Reputation: 20500
I had this issue recently (2020, May) with Google's GCP CLI. It also works on the obsolete Python 2.7.
This is a borked Python 2 installation problem. mBrew no longer correctly installs Python 2 gracefully, as no one cares about abondonware.
Conda still installs Python 2 in an environment; I did that.
Upvotes: 3
Reputation: 863
Just uninstall python2
$ brew uninstall python@2
If there is any error :
$ brew uninstall --ignore-dependencies python@2
Upvotes: 39
Reputation: 16935
Running brew reinstall python@2
didn't work for my existing Python 2.7 virtual environments. Inside them there were still ERROR:root:code for hash sha1 was not found
errors.
I encountered this problem after I ran brew upgrade openssl
. And here's the fix:
$ ls /usr/local/Cellar/openssl
...which shows
1.0.2t
According to the existing version, run:
$ brew switch openssl 1.0.2t
...which shows
Cleaning /usr/local/Cellar/openssl/1.0.2t
Opt link created for /usr/local/Cellar/openssl/1.0.2t
After that, run the following command in a Python 2.7 virtualenv:
(my-venv) $ python -c "import hashlib;m=hashlib.md5();print(m.hexdigest())"
...which shows
d41d8cd98f00b204e9800998ecf8427e
No more errors.
Upvotes: 713
Reputation: 582
When I would import hashlib I would see an error message stating that hash md5 was not found.
I was able to fix this problem by first unlinking openssl: brew unlink openssl
Then I uninstalled python 2.7 using MacPorts: sudo port uninstall python27
Then I installed python 2.7 using MacPorts: sudo port install python27
Now importing hashlib works :)
Upvotes: 0
Reputation: 655
The case for me is that when I install dependencies of a django web app, it messes up the environment. When I type cd
, it shows the same error.
The problem was the openssl
library, it can not find the correct ones.
If you are on Macintosh, you can type
ls /usr/local/Cellar/openssl
to see all the versions,
brew switch openssl 1.0.XXXX
to choose the available openssl version.
Then the error is gone :)
Upvotes: 53
Reputation: 3708
Managed to fix this by first unlinking openssl
brew unlink openssl
And then reinstalling python
brew reinstall python@2
I also noticed that when running 'brew doctor' there was a warning related to an openssl folder found in /usr/local/include/node/. I deleted this folder before running the above commands (not sure if related)
Upvotes: 102