Boto3: import boto3 error

Created on 23 Dec 2017  路  11Comments  路  Source: boto/boto3

Import boto3 always gives error. When I tries to import boto3 for the first time, Python gives error

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/local/lib/python2.7/site-packages/boto3/__init__.py", line 16, in <module>
    from boto3.session import Session
  File "/usr/local/lib/python2.7/site-packages/boto3/session.py", line 17, in <module>
    import botocore.session
  File "/usr/local/lib/python2.7/site-packages/botocore/session.py", line 25, in <module>
    import botocore.configloader
  File "/usr/local/lib/python2.7/site-packages/botocore/configloader.py", line 19, in <module>
    from botocore.compat import six
  File "/usr/local/lib/python2.7/site-packages/botocore/compat.py", line 25, in <module>
    from botocore.exceptions import MD5UnavailableError
  File "/usr/local/lib/python2.7/site-packages/botocore/exceptions.py", line 15, in <module>
    from botocore.vendored.requests.exceptions import ConnectionError
  File "/usr/local/lib/python2.7/site-packages/botocore/vendored/requests/__init__.py", line 58, in <module>
    from . import utils
  File "/usr/local/lib/python2.7/site-packages/botocore/vendored/requests/utils.py", line 26, in <module>
    from .compat import parse_http_list as _parse_list_header
  File "/usr/local/lib/python2.7/site-packages/botocore/vendored/requests/compat.py", line 7, in <module>
    from .packages import chardet
  File "/usr/local/lib/python2.7/site-packages/botocore/vendored/requests/packages/__init__.py", line 3, in <module>
    from . import urllib3
  File "/usr/local/lib/python2.7/site-packages/botocore/vendored/requests/packages/urllib3/__init__.py", line 10, in <module>
    from .connectionpool import (
  File "/usr/local/lib/python2.7/site-packages/botocore/vendored/requests/packages/urllib3/connectionpool.py", line 37, in <module>
    from .request import RequestMethods
  File "/usr/local/lib/python2.7/site-packages/botocore/vendored/requests/packages/urllib3/request.py", line 6, in <module>
    from .filepost import encode_multipart_formdata
  File "/usr/local/lib/python2.7/site-packages/botocore/vendored/requests/packages/urllib3/filepost.py", line 8, in <module>
    from .fields import RequestField
  File "/usr/local/lib/python2.7/site-packages/botocore/vendored/requests/packages/urllib3/fields.py", line 1, in <module>
    import email.utils
  File "email.py", line 2, in <module>
    from botocore.exceptions import ClientError
ImportError: cannot import name ClientError

If I try to import again, the error becomes

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/local/lib/python2.7/site-packages/boto3/__init__.py", line 16, in <module>
    from boto3.session import Session
  File "/usr/local/lib/python2.7/site-packages/boto3/session.py", line 17, in <module>
    import botocore.session
  File "/usr/local/lib/python2.7/site-packages/botocore/session.py", line 25, in <module>
    import botocore.configloader
  File "/usr/local/lib/python2.7/site-packages/botocore/configloader.py", line 19, in <module>
    from botocore.compat import six
  File "/usr/local/lib/python2.7/site-packages/botocore/compat.py", line 25, in <module>
    from botocore.exceptions import MD5UnavailableError
  File "/usr/local/lib/python2.7/site-packages/botocore/exceptions.py", line 15, in <module>
    from botocore.vendored.requests.exceptions import ConnectionError
  File "/usr/local/lib/python2.7/site-packages/botocore/vendored/requests/__init__.py", line 58, in <module>
    from . import utils
  File "/usr/local/lib/python2.7/site-packages/botocore/vendored/requests/utils.py", line 25, in <module>
    from . import certs
ImportError: cannot import name certs

I have tried to use old version

boto3==1.4.4
botocore==1.5.95

And I also tried to upgrade to latest version

boto3==1.5.6
botocore==1.8.20

both of these give the same error.

AWS version that I use is

awscli==1.14.16
awsebcli==3.12.1
closing-soon

Most helpful comment

Please look at this post

I think our mistake is to put our file named as email.py and Python cannot pick up the correct module as pointed by the post.

It is not related to package installation. Just rename the file.

All 11 comments

I have also posted this issue on StackOverflow. Still no luck of fixing this.

I would recommend trying to completely uninstall botocore / boto3 and do a re-install. Something in your installation is off. I would also recommend using a virtualenv so that these sorts of issues can be isolated and easily resolved.

I try to use virtualenv and install boto3 from scratch, but it still does not work. I don't know if it is installation issue. I try to run import boto3 in Python command line and it works fine. It only fails if I try to run a program containing import boto3.

How did you install boto3? Did you install via pip? What's your OS?

Yes, I install via pip. My Python version is 2.7.10 and I am using MacOS. OS version is macOS 10.13.2.

same here with windows 10 user... How to resolve in windows 10??????????
My python is 3.6.2
boto3
botoerror

Exactly this is the error
>>> import boto3 Traceback (most recent call last): File "<stdin>", line 1, in <module> File "C:\Users\Abhinav\AppData\Local\Programs\Python\Python36-32\lib\site-packages\boto3\__init__.py", line 16, in <mo dule> from boto3.session import Session File "C:\Users\Abhinav\AppData\Local\Programs\Python\Python36-32\lib\site-packages\boto3\session.py", line 17, in <mod ule> import botocore.session File "C:\Users\Abhinav\AppData\Local\Programs\Python\Python36-32\lib\site-packages\botocore\session.py", line 25, in < module> import botocore.configloader File "C:\Users\Abhinav\AppData\Local\Programs\Python\Python36-32\lib\site-packages\botocore\configloader.py", line 19, in <module> from botocore.compat import six File "C:\Users\Abhinav\AppData\Local\Programs\Python\Python36-32\lib\site-packages\botocore\compat.py", line 25, in <m odule> from botocore.exceptions import MD5UnavailableError File "C:\Users\Abhinav\AppData\Local\Programs\Python\Python36-32\lib\site-packages\botocore\exceptions.py", line 15, i n <module> from botocore.vendored.requests.exceptions import ConnectionError File "C:\Users\Abhinav\AppData\Local\Programs\Python\Python36-32\lib\site-packages\botocore\vendored\requests\__init__ .py", line 58, in <module> from . import utils File "C:\Users\Abhinav\AppData\Local\Programs\Python\Python36-32\lib\site-packages\botocore\vendored\requests\utils.py ", line 12, in <module> import cgi File "C:\Users\Abhinav\AppData\Local\Programs\Python\Python36-32\lib\cgi.py", line 39, in <module> from email.parser import FeedParser File "C:\Users\Abhinav\email.py", line 2, in <module> from botocore.exceptions import ClientError ImportError: cannot import name 'ClientError'

This issue is very weird.

Disabling MacOS rootless feature only solves the issue temporarily, and then it fails again.

I tried to install boto3 from source in virtualenv and it succeeded once. However, after I try to recreate same environment with same approach, it fails again.

exactly...
It works sometimes, but every time else it doesn't.

Please look at this post

I think our mistake is to put our file named as email.py and Python cannot pick up the correct module as pointed by the post.

It is not related to package installation. Just rename the file.

Looks like @jiashenC figured it out.

Was this page helpful?
0 / 5 - 0 ratings

Related issues

chesstrian picture chesstrian  路  3Comments

yannbriancon picture yannbriancon  路  3Comments

jparismorgan picture jparismorgan  路  3Comments

arnonki picture arnonki  路  3Comments

arijitArusan picture arijitArusan  路  3Comments