Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 无法从键入导入协议_Python_Python 3.x - Fatal编程技术网

Python 无法从键入导入协议

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

我刚刚在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
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