【问题标题】:Python Django ImportError: cannot import name 'Required' from 'typing_extensions'Python Django ImportError:无法从“typing_extensions”导入名称“必需”
【发布时间】:2021-12-19 18:00:21
【问题描述】:

Django 版本是 3.2.9

Python 版本是 3.10.0

还有打字扩展3.10.0.2

我是编码、python 等方面的新手,无法弄清楚问题所在。按照 django 教程,我创建了一个应用程序并成功运行了服务器,但是一天后,当我再次尝试这样做时,我遇到了这个问题:

File "C:\Users\fused\Desktop\code\py\myproject\myapp\views.py", line 1, in <module>
from typing_extensions import Required
ImportError: cannot import name 'Required' from 'typing_extensions' (C:\Users\fused\AppData\Local\Programs\Python\Python310\lib\site-packages\typing_extensions.py)

尝试使用“python manage.py runserver”运行服务器后出现此问题,尝试重新安装 typing_extensions,检查所有版本,但没有解决问题。

如果需要任何其他信息,我会回复。提前致谢

【问题讨论】:

  • 看起来from typing_extensions import Required 行在您的代码中。你为什么要导入它? typing_extensions 没有定义任何名为 Required 的东西。
  • 我知道这里的通知是如何工作的,如果你会看到,但谢谢你,我真的不知何故向下滚动了一点,看不到导入行,你让我重新检查一切,也许盲从教程并不是最好的学习方法:)

标签: python python-3.x django


【解决方案1】:

更新

typing_extensions 版本 4.0.0 中添加了对 RequiredNotRequired 的支持作为实验性功能。

现在一切都应该像PEP 655 中所说的那样正常工作。

旧答案

RequiredNotRequired 似乎还没有在 typing_extensions 中实现。

PEP 655 状态:

目标是能够做出如下陈述:

mypy 类型检查器支持Required 和NotRequired。 Typing_extensions 模块中提供了运行时组件的参考实现。

这只是目标——不是当前状态。它既没有列在typing_extensions'README 中,也没有出现在源代码中。

我认为 vscode 的 pylance/pyright 可以解析 typing_extensions.Requiredtyping_extensions.NotRequired 确实令人困惑,即使它没有在模块中实现。

作为一种解决方法,您可以尝试将from typing_extensions import Required 替换为

try:
    from typing_extensions import Required
except ImportError:
    from typing import Generic, TypeVar

    T = TypeVar("T")

    class Required(Generic[T]):
        pass

【讨论】:

    猜你喜欢
    • 2021-11-09
    • 2016-01-07
    • 1970-01-01
    • 2022-06-24
    • 2018-05-29
    • 1970-01-01
    • 2019-09-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多