我正在使用烧瓶创建一个 REST api,当我正要在邮递员上测试它时,我看到了那个错误

Posted

技术标签:

【中文标题】我正在使用烧瓶创建一个 REST api,当我正要在邮递员上测试它时,我看到了那个错误【英文标题】:i was creating a REST api using flask and while i was about to test it on postman I saw that error 【发布时间】:2021-12-18 15:41:09 【问题描述】:
  File "c:\Users\kally\rest\code\app.py", line 3, in <module>
    from flask_jwt import JWT
  File "C:\Users\kally\AppData\Roaming\Python\Python310\site-packages\flask_jwt\__init__.py", line 16, in <module>
    import jwt
  File "C:\Users\kally\AppData\Roaming\Python\Python310\site-packages\jwt\__init__.py", line 19, in <module>   
    from .api_jwt import (
  File "C:\Users\kally\AppData\Roaming\Python\Python310\site-packages\jwt\api_jwt.py", line 5, in <module>     
    from collections import Mapping
ImportError: cannot import name 'Mapping' from 'collections' (C:\Program Files\Python310\lib\collections\__init__.py)

【问题讨论】:

docs.python.org/3/library/collections.html 3.10 ... 集合中没有映射。 Mapping 在 3.3 中移至 collections.abc.mapping 并从 3.9 开始弃用,但直到 3.8 它仍然可见。 【参考方案1】:

扩展我的评论:

与described in the documentation 一样,Mapping 在 v3.3 中已移至 collections.abc,并且自 v3.9 起已弃用(但在 v3.8 之前仍保持向后兼容性可见)。

您的错误源于使用过时的导入 - 您需要升级使用过的 pyjwt/jwt - 尤其是它的 /api_jwt.py。当前版本

https://github.com/jpadilla/pyjwt/blob/master/jwt/api_jwt.py

使用自 2018 年 11 月 this commit 以来的正确导入。

【讨论】:

老实说我不明白你能不能像向新手解释一样解释它 @gabrielkalango 您在导入时使用的是旧软件。这些旧的东西使用语法来导入不再起作用的 Mapping 类(自 3.9 起)。您需要更新导入的模块:how-do-i-update-a-python-package - 这可能会或可能不会破坏其他东西,所以要小心【参考方案2】:

那个错误

from collections import Mapping
ImportError: cannot import name 'Mapping' from 'collections' 

是在告诉你,collection 包中没有 Mapping。请查看doc

【讨论】:

以上是关于我正在使用烧瓶创建一个 REST api,当我正要在邮递员上测试它时,我看到了那个错误的主要内容,如果未能解决你的问题,请参考以下文章

限制对烧瓶 REST API 的访问

将 Flask Restless API 连接到 Admin-on-rest (React)

当我进行 Rest api 调用时,使用 Spring Boot 动态创建列/表

动态数据不会在烧瓶中改变

Magento 2 REST API

Azure DevOps REST API - 创建工作项 - “需要一个值”