我在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,但从我的角度来看,我所做的与记录的相同。
答案 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)
在implementation的PEP 544部分中,
mypy
类型检查器完全支持协议(一些已知的模 错误)。这包括处理所有内置协议,例如Iterable
结构上。协议的运行时实现为 在PyPI的typing_extensions
模块中可用。
因此,在您的代码中添加from typing_extensions import Protocol
。