3

I am fairly new to python and have tried installing python 2.7.9 following the steps described here. The installation failed with the following error:

python make: *** [libinstall] Error 1

I tried reinstalling the previous version of python:

sudo apt-get install --reinstall  python2.7-dev

The installation proceeded normally. However, now, when trying to import hashlib I get the following errors:

Traceback (most recent call last):
  File "./server.py", line 5, in <module>
    import hashlib
  File "/usr/lib/python2.7/hashlib.py", line 138, in <module>
    _hashlib.openssl_md_meth_names)
AttributeError: 'module' object has no attribute 'openssl_md_meth_names'

I am also unable to install any packages using pip as the only output provided is the following:

Traceback (most recent call last):
  File "/usr/bin/pip", line 5, in <module>
    from pkg_resources import load_entry_point
ImportError: No module named pkg_resources

I installed python-setuptools:

sudo apt-get install python-setuptools

pip still provides the same output regardless of the input. Following this question I ran:

curl -O https://bitbucket.org/pypa/setuptools/raw/bootstrap/ez_setup.py
chmod +x ez_setup.py
python ez_setup.py

The output is:

Traceback (most recent call last):
  File "ez_setup.py", line 19, in <module>
    import tempfile
  File "/usr/lib/python2.7/tempfile.py", line 35, in <module>
    from random import Random as _Random
  File "/usr/lib/python2.7/random.py", line 49, in <module>
    import hashlib as _hashlib
  File "/usr/lib/python2.7/hashlib.py", line 138, in <module>
    _hashlib.openssl_md_meth_names)
AttributeError: 'module' object has no attribute 'openssl_md_meth_names'

Where is the issue?

Edit #1:

The output of sudo apt-get install --reinstall python2.7-dev seems normal:

Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following packages were automatically installed and are no longer required:
  libjs-sphinxdoc linux-headers-generic linux-image-generic
Use 'apt-get autoremove' to remove them.
0 upgraded, 0 newly installed, 1 reinstalled, 0 to remove and 310 not upgraded.
Need to get 0 B/269 kB of archives.
After this operation, 0 B of additional disk space will be used.
(Reading database ... 219657 files and directories currently installed.)
Preparing to unpack .../python2.7-dev_2.7.6-8_amd64.deb ...
Unpacking python2.7-dev (2.7.6-8) over (2.7.6-8) ...
Processing triggers for man-db (2.6.7.1-1) ...
Setting up python2.7-dev (2.7.6-8) ...

Edit #2:

I have found this question which tackles a similar issue. It points to this thread which uses a checkinstall in order to retrieve all written files and creating a .deb package from them:

sudo apt-get install checkinstall  # install the checkinstall package
cd /home/user/Python-2.7.9
sudo checkinstall -D --fstrans=no make install   # make the deb package

Upon running the last command the output provided is identical with the one given by make install:

...
Listing /usr/lib/python2.7/xml/parsers ...
Compiling /usr/lib/python2.7/xml/parsers/__init__.py ...
Compiling /usr/lib/python2.7/xml/parsers/expat.py ...
Listing /usr/lib/python2.7/xml/sax ...
Compiling /usr/lib/python2.7/xml/sax/__init__.py ...
Compiling /usr/lib/python2.7/xml/sax/_exceptions.py ...
Compiling /usr/lib/python2.7/xml/sax/expatreader.py ...
Compiling /usr/lib/python2.7/xml/sax/handler.py ...
Compiling /usr/lib/python2.7/xml/sax/saxutils.py ...
Compiling /usr/lib/python2.7/xml/sax/xmlreader.py ...
Compiling /usr/lib/python2.7/xmllib.py ...
Compiling /usr/lib/python2.7/xmlrpclib.py ...
Compiling /usr/lib/python2.7/zipfile.py ...
make: *** [libinstall] Error 1

Edit #3:

It appears that all scripts are unable to run. I am working on signing algorithms(used in bitcoin) and the tools mentioned here(bu, tx) are all outputting the same error:

 Traceback (most recent call last):
  File "/usr/local/bin/bu", line 5, in <module>
    from pkg_resources import load_entry_point
ImportError: No module named pkg_resources

Edit #4:

I have also tried the approach mentioned here. The output of python get-pip.py is the following:

Traceback (most recent call last):
  File "get-pip.py", line 28, in <module>
    import tempfile
  File "/usr/lib/python2.7/tempfile.py", line 35, in <module>
    from random import Random as _Random
  File "/usr/lib/python2.7/random.py", line 49, in <module>
    import hashlib as _hashlib
  File "/usr/lib/python2.7/hashlib.py", line 138, in <module>
    _hashlib.openssl_md_meth_names)
AttributeError: 'module' object has no attribute 'openssl_md_meth_names'

If I comment the line:

import tempfile

then execution continues up to line 141:

Traceback (most recent call last):
  File "get-pip.py", line 19892, in <module>
    main()
  File "get-pip.py", line 141, in main
    tmpdir = tempfile.mkdtemp()
NameError: global name 'tempfile' is not defined

meaning that the import of the following libraries:

import os.path
import pkgutil
import shutil
import sys
import struct
# import tempfile

succeeds. This makes me believe that the installation of python2.7.9 is only partially complete(as wisely suggested in the comments to this question).

Edit #5:

I have reran the configuration and compilation steps:

./configure --prefix=/usr       \
            --enable-shared     \
            --with-system-expat \
            --with-system-ffi   \
            --enable-unicode=ucs4 &&
make

The builds terminates with:

Python build finished, but the necessary bits to build these modules were not found:
bsddb185           dl                 imageop         
sunaudiodev                                           
To find the necessary bits, look in setup.py in detect_modules() for the module's name.

running build_scripts

Are these modules essential?

8
  • @Alex Martelli. Yes, edited. Commented Jan 11, 2015 at 17:59
  • 1
    Your --reinstall doesn't give you 2.7.9 but rather whatever version your Debian repo supplies, maybe 2.7.5. That method was indeed introduced in 2.7.9 and you may have ended up with a mixed install, different and incompatible versions of Python and C files in the library. Look at the second answer to stackoverflow.com/questions/27711323/… to find out how to get 2.7.9 for Debian via unstable repos and pinning (tricky). But anyway, first uninstall your current broken Python and reinstall from scratch. Commented Jan 11, 2015 at 18:05
  • @Alex Martelli. I am trying to restore the previous installation(for Debian). It is being installed correctly. However, I am not able to run any script that requires hashlib and pip seems broken. Commented Jan 11, 2015 at 18:15
  • 1
    So you probably have bits and pieces of the 2.7.9 install attempt hanging around: uninstall it all, hunt down all the usual suspect directories for stray pieces that didn't get uprooted for whatever reason, and restart from clean slate. It's really a sys-admin problem, more than a programming one, so you may have better luck asking on ServerFault, where the sysadm gurus tend to hang out!-) Commented Jan 11, 2015 at 18:20
  • 3
    High odds if it's ubuntu rather than plain debian -- all the more reason to ask on askubuntu.com where the real ubuntu wizards are, rather than on this programming-focused website!-) Commented Jan 11, 2015 at 21:39

3 Answers 3

1

It's an old thread, but my answer might help others in the future.

Step 1. check _hashlib.openssl_md_meth_names through the following, and no error shows up.

$ python
Python 2.7.9 (default, Oct 20 2016, 07:39:46) 
[GCC 4.4.7 20120313 (Red Hat 4.4.7-4)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import _hashlib
>>> _hashlib.openssl_md_meth_names
frozenset(['SHA256', 'SHA512', 'dsaWithSHA', 'md4', 'sha256', 'sha512', 'RIPEMD160', 'md5', 'whirlpool', 'SHA1', 'SHA224', 'SHA', 'SHA384', 'ecdsa-with-SHA1', 'MD4', 'DSA', 'sha1', 'DSA-SHA', 'sha224', 'dsaEncryption', 'ripemd160', 'sha', 'MD5', 'sha384'])
>>> 

Step 2:

change the followng line:

File "/usr/lib/python2.7/random.py", line 49, in <module>
import hashlib as _hashlib

into:

import _hashlib

Then it's done.

Sign up to request clarification or add additional context in comments.

Comments

1

in my case, i am using virtualenv just copied virtualenv folder from old machine into new ... in my new when i tried to install pip packages it threw this error..

i resolved this issue by creating new virtualenv reinstalled pip packages once again...

Comments

0

File "/usr/lib/python2.7/hashlib.py", line 138, in _hashlib.openssl_md_meth_names) AttributeError: 'module' object has no attribute 'openssl_md_meth_names'

Can be fixed by running:

pip install hashlib

or

easyinstall hashlib

or

easy_install-2.7 hashlib

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.