1

I'm new to APIs and am following the exact instructions of every website explaining how one is supposed to get help of the APIs in Python using the requests module. However, no matter what API link I define (of course I went for many free API samples just to test if they work), I get this error: ImportError: cannot import name 'b64encode' from 'base64' I have no idea what the problem is, or what I'm not getting right. Here's my snippet, just as a sample:

import requests

words = 30
paragraphs = 1
formats = 'text'

response = requests.get(f"https://v2.jokeapi.dev/")
print(response.text)

The complete error I get is like so:

Traceback (most recent call last):
  File "/home/liana/Desktop/testing.py", line 1, in <module>
    import requests
  File "/usr/lib/python3/dist-packages/requests/__init__.py", line 43, in <module>
    import urllib3
  File "/usr/lib/python3/dist-packages/urllib3/__init__.py", line 11, in <module>
    from . import exceptions
  File "/usr/lib/python3/dist-packages/urllib3/exceptions.py", line 3, in <module>
    from six.moves.http_client import IncompleteRead as httplib_IncompleteRead
  File "/usr/lib/python3/dist-packages/six.py", line 203, in load_module
    mod = mod._resolve()
  File "/usr/lib/python3/dist-packages/six.py", line 115, in _resolve
    return _import_module(self.mod)
  File "/usr/lib/python3/dist-packages/six.py", line 82, in _import_module
    __import__(name)
  File "/usr/lib/python3.9/http/client.py", line 71, in <module>
    import email.parser
  File "/usr/lib/python3.9/email/parser.py", line 12, in <module>
    from email.feedparser import FeedParser, BytesFeedParser
  File "/usr/lib/python3.9/email/feedparser.py", line 27, in <module>
    from email._policybase import compat32
  File "/usr/lib/python3.9/email/_policybase.py", line 7, in <module>
    from email import header
  File "/usr/lib/python3.9/email/header.py", line 17, in <module>
    import email.base64mime
  File "/usr/lib/python3.9/email/base64mime.py", line 37, in <module>
    from base64 import b64encode
ImportError: cannot import name 'b64encode' from 'base64' (/home/liana/Desktop/base64.py)
Error in sys.excepthook:
Traceback (most recent call last):
  File "/usr/lib/python3/dist-packages/apport_python_hook.py", line 72, in apport_excepthook
    from apport.fileutils import likely_packaged, get_recent_crashes
  File "/usr/lib/python3/dist-packages/apport/__init__.py", line 5, in <module>
    from apport.report import Report
  File "/usr/lib/python3/dist-packages/apport/report.py", line 21, in <module>
    from urllib.request import urlopen
File "/usr/lib/python3.9/urllib/request.py", line 88, in <module>
    import http.client
  File "/usr/lib/python3.9/http/client.py", line 71, in <module>
    import email.parser
  File "/usr/lib/python3.9/email/parser.py", line 12, in <module>
    from email.feedparser import FeedParser, BytesFeedParser
  File "/usr/lib/python3.9/email/feedparser.py", line 27, in <module>
    from email._policybase import compat32
  File "/usr/lib/python3.9/email/_policybase.py", line 7, in <module>
    from email import header
  File "/usr/lib/python3.9/email/header.py", line 17, in <module>
    import email.base64mime
  File "/usr/lib/python3.9/email/base64mime.py", line 37, in <module>
    from base64 import b64encode
ImportError: cannot import name 'b64encode' from 'base64' (/home/liana/Desktop/base64.py)
Original exception was:
Traceback (most recent call last):
  File "/home/liana/Desktop/testing.py", line 1, in <module>
    import requests
  File "/usr/lib/python3/dist-packages/requests/__init__.py", line 43, in <module>
    import urllib3
  File "/usr/lib/python3/dist-packages/urllib3/__init__.py", line 11, in <module>
    from . import exceptions
  File "/usr/lib/python3/dist-packages/urllib3/exceptions.py", line 3, in <module>
    from six.moves.http_client import IncompleteRead as httplib_IncompleteRead
  File "/usr/lib/python3/dist-packages/six.py", line 203, in load_module
    mod = mod._resolve()
  File "/usr/lib/python3/dist-packages/six.py", line 115, in _resolve
    return _import_module(self.mod)
  File "/usr/lib/python3/dist-packages/six.py", line 82, in _import_module
    __import__(name)
  File "/usr/lib/python3.9/http/client.py", line 71, in <module>
    import email.parser
  File "/usr/lib/python3.9/email/parser.py", line 12, in <module>
    from email.feedparser import FeedParser, BytesFeedParser
  File "/usr/lib/python3.9/email/feedparser.py", line 27, in <module>
    from email._policybase import compat32
  File "/usr/lib/python3.9/email/_policybase.py", line 7, in <module>
    from email import header
  File "/usr/lib/python3.9/email/header.py", line 17, in <module>
    import email.base64mime
  File "/usr/lib/python3.9/email/base64mime.py", line 37, in <module>
    from base64 import b64encode
ImportError: cannot import name 'b64encode' from 'base64' (/home/liana/Desktop/base64.py)

Any help is appreciated.

18
  • looks like a missing library dependency on your end Commented Nov 2, 2021 at 19:30
  • @MadPhysicist How can I find out what's missing? Commented Nov 2, 2021 at 19:32
  • 1
    What is /home/liana/Desktop/base64.py? It looks like one of yours. Commented Nov 2, 2021 at 19:38
  • 1
    Wait. What's testing vs base64? Try renaming base64 to something else. It looks like it's picking up the wrong path entry because of the name conflict. Commented Nov 2, 2021 at 19:53
  • 2
    So your folder contains no extra files? The error message pretty clearly says /home/liana/Desktop/base64.py... Commented Nov 2, 2021 at 20:20

1 Answer 1

2

If you look carefully at the traceback, you will see that it starts with your script, "/home/liana/Desktop/testing.py", goes through a chain of imports, and ends up crashing trying to import b64encode from base64.py.

The file /home/liana/Desktop/base64.py is something you either created or downloaded. Since it's in the current directory, it supersedes the real base64.py that "/usr/lib/python3.9/email/base64mime.py" is looking for. The file in your current directory clearly does not define the name b64encode, which is the immediate cause of the error.

To fix the problem, make sure the names of the files in your current directory don't conflict with the names of other top level modules. So either rename it delete /home/liana/Desktop/base64.py.

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

1 Comment

I really appreciate your instructions :)

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.