Python 使用请求时在 API 周围抛出错误

Python throwing error around API when using requests

我是 APIs 的新手,我正在按照每个网站的确切说明进行操作,解释应该如何使用请求获得 Python 中 APIs 的帮助模块。但是,无论我定义什么API link(当然我去买了很多免费的API样本只是为了测试它们是否有效),我得到这个错误:ImportError: cannot import name 'b64encode' from 'base64' 我不知道问题出在哪里,或者我做错了什么。 这是我的代码片段,仅作为示例:

import requests

words = 30
paragraphs = 1
formats = 'text'

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

我得到的完整错误是这样的:

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)

感谢任何帮助。

如果仔细查看回溯,您会发现它从您的脚本 "/home/liana/Desktop/testing.py" 开始,经过一系列导入,最终在尝试从 [导入 b64encode 时崩溃=12=].

文件 /home/liana/Desktop/base64.py 是您创建或下载的文件。因为它在当前目录中,所以它取代了 "/usr/lib/python3.9/email/base64mime.py" 正在寻找的真实 base64.py。您当前目录下的文件显然没有定义名称b64encode,这是错误的直接原因。

要解决此问题,请确保当前目录中的文件名不与其他顶级模块的名称冲突。所以要么将其重命名为 delete /home/liana/Desktop/base64.py.