python - 使用请求时Python在API周围抛出错误
问题描述
我是 API 新手,并且正在遵循每个网站的确切说明,解释应该如何使用 requests 模块在 Python 中获得 API 的帮助。但是,无论我定义什么 API 链接(当然,我为了测试它们是否工作而使用了许多免费的 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
崩溃base64.py
。
该文件/home/liana/Desktop/base64.py
是您创建或下载的文件。由于它在当前目录中,因此它取代了正在寻找的真实base64.py
目录"/usr/lib/python3.9/email/base64mime.py"
。您当前目录中的文件显然没有定义 name b64encode
,这是错误的直接原因。
要解决此问题,请确保当前目录中的文件名称与其他顶级模块的名称不冲突。所以要么重命名它 delete /home/liana/Desktop/base64.py
。
推荐阅读
- sql - SQL 查询具有最后结束日期的非活动用户
- node.js - Socket.io 客户端不断在 Heroku 上重新连接,与 node.js 反应
- javascript - 如何使用反应挂钩将数据从父级传递给子级
- python - Python使用Pyparsing解析逗号分隔的嵌套括号
- r - r中多个文件的自定义csv导入和合并功能
- spring-boot - 使用 Spring Boot 服务创建新用户时 Keycloak HTTP 401 Unauthorized
- node.js - 从 Mongoose 的文档中检索数组元素
- angular - 如何在 Ngsw 中处理自定义代码 - 在 Fetch 事件中
- apache - 由于 ld.so.1 无法启动 apache 网络服务器:httpd: libonssys.so: open failed
- android - 在 Java 中访问 GridLayout 中的按钮?