【问题标题】:cannot import name 'Mapping' from 'collections' on importing requests在导入请求时无法从 \'collections\' 导入名称 \'Mapping\'
【发布时间】:2022-08-14 22:27:46
【问题描述】:

Python版本:Python 3.10.4
画中画版:pip 22.0.4

所以我试图用套接字做一个小项目,我添加了一个上传文件的功能,但是每当我导入请求时,它都会抛出这个错误。下面是我运行的代码。

Traceback (most recent call last):
  File \"C:\\Programming\\WireUS\\test.py\", line 1, in <module>
    import requests
  File \"C:\\Users\\John\\AppData\\Local\\Programs\\Python\\Python310\\lib\\site-packages\\requests\\__init__.py\", line 43, in <module>
    import urllib3
  File \"C:\\Users\\John\\AppData\\Local\\Programs\\Python\\Python310\\lib\\site-packages\\urllib3\\__init__.py\", line 8, in <module>
    from .connectionpool import (
  File \"C:\\Users\\John\\AppData\\Local\\Programs\\Python\\Python310\\lib\\site-packages\\urllib3\\connectionpool.py\", line 29, in <module>
    from .connection import (
  File \"C:\\Users\\John\\AppData\\Local\\Programs\\Python\\Python310\\lib\\site-packages\\urllib3\\connection.py\", line 39, in <module>
    from .util.ssl_ import (
  File \"C:\\Users\\John\\AppData\\Local\\Programs\\Python\\Python310\\lib\\site-packages\\urllib3\\util\\__init__.py\", line 3, in <module>
    from .connection import is_connection_dropped
  File \"C:\\Users\\John\\AppData\\Local\\Programs\\Python\\Python310\\lib\\site-packages\\urllib3\\util\\connection.py\", line 3, in <module>
    from .wait import wait_for_read
  File \"C:\\Users\\John\\AppData\\Local\\Programs\\Python\\Python310\\lib\\site-packages\\urllib3\\util\\wait.py\", line 1, in <module>
    from .selectors import (
  File \"C:\\Users\\John\\AppData\\Local\\Programs\\Python\\Python310\\lib\\site-packages\\urllib3\\util\\selectors.py\", line 14, in <module>
    from collections import namedtuple, Mapping
ImportError: cannot import name \'Mapping\' from \'collections\' (C:\\Users\\John\\AppData\\Local\\Programs\\Python\\Python310\\lib\\collections\\__init__.py)

即使是这个基本代码也给了我这个错误。

import requests
import time

r = request.get(\"google.com\").text
print(r)

time.sleep(999)
  • 看起来您使用的请求版本已过时。 Mapping 类型已移至 collections.abc
  • 我尝试更新但它不起作用我使用什么命令来正确更新模块?
  • 这是urllib3 版本,而不是requests 版本。

标签: python collections python-requests


【解决方案1】:

正如user2357112-supports-monica 所说,运行pip install urllib3 可以修复它。

【讨论】:

    【解决方案2】:

    您必须提及您的网址的架构(http、ftp、https):

    import requests
    import time
    
    r = requests.get("https://google.com").text
    print(r)
    

    【讨论】:

    • 如果我只将import requests 放入文件并运行它,它会引发相同的错误。
    • @JUB0T 好的,那么问题出在您的安装上
    【解决方案3】:

    如果您想使用 Python 3.10 解决遗留代码:

    打开C:\Program Files\Python310\lib\collections\__init__.py部分并添加以下内容:

    from collections.abc import Mapping
    from collections.abc import MutableMapping
    from collections.abc import Sequence
    

    此外,如果您的项目 .py 文件仍有旧代码行 import collections,只需将其替换为新代码行 from collections.abc import Mapping

    【讨论】:

      猜你喜欢
      • 2022-08-21
      • 2022-12-20
      • 2022-08-14
      • 2015-06-11
      • 2022-08-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-10
      相关资源
      最近更新 更多