无法通过键入导入协议

时间:2019-01-20 08:07:58

标签: python python-3.x

我在Windows 10上全新安装了Python 3.7-32。

我想尝试使用Protocols python方法,然后执行以下操作:

文件test_protocols.py仅包含一行:

from typing import Protocol

然后:

>python test_protocols.py

还有下一条错误消息需要解释:

Traceback (most recent call last):
  File "test_protocols.py", line 1, in <module> 
    from typing import Protocol
ImportError: cannot import name 'Protocol' from 'typing' (C:\Programing\Python\Python37-32\lib\typing.py)

我该怎么办?

也许我读错了PEP-0544,但从我的角度来看,我所做的与记录的相同。

3 个答案:

答案 0 :(得分:3)

如果键入中不存在

pip install typing_extensions

from typing_extensions import Protocol

取决于操作系统和Python版本,协议类可能在键入模块中或在types_extensions中。

答案 1 :(得分:2)

截至2019年1月20日,PEP 544的状态为Draft。据我了解,它尚未在CPython中实现。

答案 2 :(得分:0)

implementationPEP 544部分中,

  

mypy类型检查器完全支持协议(一些已知的模   错误)。这包括处理所有内置协议,例如   Iterable结构上。协议的运行时实现为   在PyPI的typing_extensions模块中可用。

因此,在您的代码中添加from typing_extensions import Protocol