Python 无法从键入导入协议
我刚刚在Windows10上安装了Python 3.7-32 我想尝试python方法,接下来我会: 仅包含一行的文件test_protocols.py:Python 无法从键入导入协议,python,python-3.x,Python,Python 3.x,我刚刚在Windows10上安装了Python 3.7-32 我想尝试python方法,接下来我会: 仅包含一行的文件test_protocols.py: from typing import Protocol 然后: 我还有下一个需要解释的错误消息: Traceback (most recent call last): File "test_protocols.py", line 1, in <module> from typing import Protocol
from typing import Protocol
然后:
我还有下一个需要解释的错误消息:
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)
回溯(最近一次呼叫最后一次):
文件“test_protocols.py”,第1行,在
从输入导入协议
ImportError:无法从“键入”导入名称“协议”(C:\Programming\Python\Python37-32\lib\typing.py)
我做错了什么
也许我看错了PEP-0544,但从我的角度来看,我的做法与文件中的相同。截至2019年1月20日,PEP-0544的状态为草稿。据我所知,它还没有在CPython中实现
UPD:它应该可以在Python 3.8中使用,请尝试更新。在的一节中,它说
mypy
类型检查器完全支持协议(以一些已知的
臭虫)。这包括处理所有内置协议,例如
Iterable
在结构上。协议的运行时实现是
可在PyPI上的typing_extensions
模块中找到
因此,在您的代码中,如果键入do中不存在扩展导入协议,请从键入中添加
pip install typing_extensions
from typing_extensions import Protocol
根据操作系统和Python版本的不同,协议类可能位于类型模块或类型扩展中。噢,没错。谢谢。我们将尝试另一种方法,比如pypi.org/project/python-interface.PEP 544中的python接口库,它已经被接受到python 3.8中,因此导入工作已经开始。
pip install typing_extensions
from typing_extensions import Protocol