AttributeError: 'module' object has no attribute python

python raise attributeerror
how to handle attribute error in python
how to remove attribute error in python
python attributeerror object has no attribute
attributeerror django
<class 'attributeerror'>
python custom exception
attributeerror pplayoutblank

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?

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.

6. Built-in Exceptions, The following exceptions are the exceptions that are actually raised. exception AssertionError ¶. Raised when an assert statement fails. exception AttributeError ¶. The AttributeError in Python is raised when an invalid attribute reference is made, or when an attribute assignment fails. While most objects support attributes, those that do not will merely raise a TypeError when an attribute access attempt is made.

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

Python Exception Handling - AttributeError, The AttributeError in Python is raised when an invalid attribute reference is made, or when an attribute assignment fails. While most objects  I usually think about attributes as nouns that belong to an object. For example, “the student has two eyes ”. But in Python, an attribute can also be an action that an object can perform—“The cat can jump ”. An attribute in Python means some property that is associated with a particular type of object.

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...

Python: AttributeError, These errors yields to the program not executed. One of the error in Python mostly occurs is “ AttributeError “. AttributeError can be defined as an error that is raised  @desertnaut frankly, this question is 2 months old and I forgot it long time ago :). Sometimes I visit so many questions that I don't remeber questions from previous hour :) – furas 2 days ago

Error Encyclopedia, Attribute Error. Attributes in Python. I usually think about attributes as nouns that belong to an object. For example, “the student has two eyes”. But in Python, an  Recent in Python. How to create new environment using conda? 21 hours ago How can I define a function that takes a list of first names and a list of last names, and returns a list of the corresponding full names where the last name is initialized 1 day ago

Why does this AttributeError in python occur?, This happens because the scipy module doesn't have any attribute named sparse . That attribute only gets defined when you import  I ran into this problem when I checked out an older version of a repository from git. Git replaced my .py files, but left the untracked .pyc files. Since the .py files and .pyc files were out of sync, the import command in a .py file could not find the corresponding module in the .pyc files.

How to Get Rid of an Attribute Error in Python, When you get an attribute error in Python, it means you tried to access the attribute value of, or assign an attribute value to, a Python object or class instance in  Concrete exceptions¶ The following exceptions are the exceptions that are usually raised. exception AssertionError¶ Raised when an assert statement fails. exception AttributeError¶ Raised when an attribute reference (see Attribute references) or assignment fails.

Comments
  • @Alex Martelli. Yes, edited.
  • 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.
  • @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.
  • 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!-)
  • 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!-)