ImportError: cannot import name 'OrderedDict' from 'typing'
时间: 2023-07-24 19:41:06 浏览: 372
这个错误通常发生在 Python 3.7 及以上版本中,因为在这些版本中, `OrderedDict` 被移到了 `collections` 模块中,而不再是 `typing` 模块中。
要解决这个错误,你需要在代码中将 `typing.OrderedDict` 替换为 `collections.OrderedDict`。例如:
```
from collections import OrderedDict
my_dict = OrderedDict()
```
这样你的代码就应该可以正常工作了。
相关问题
importerror: cannot import name 'ordereddict' from 'typing'
### 回答1:
这个错误是因为在 Python 3.7 版本中,`ordereddict` 已经被移除了,而在 `typing` 模块中引入了一个新的 `OrderedDict` 类型。因此,如果你在代码中使用了旧的 `ordereddict`,就会出现这个错误。
要解决这个问题,你需要将代码中的 `ordereddict` 替换为 `typing.OrderedDict`。这样就可以使用新的 `OrderedDict` 类型了。
### 回答2:
这个错误是由于在导入typing库中的ordereddict时出现了问题。实际上,在Python 3.7及更高版本中,不再存在collections模块中的ordereddict,因此无法从typing库中导入。
如果您使用的是Python 3.6或更早的版本,则可以通过以下方式进行导入:
from collections import ordereddict
而在Python 3.7及更高版本中,您需要对代码进行调整:
from collections import OrderedDict
您需要将OrderedDict替换为ordereddict,以使其向后兼容。或者,您也可以使用更具描述性的名称,如OrderedDict,以避免命名混淆。
除了更改导入语句之外,还可以考虑升级您的Python版本以获得更多的新特性和改进。当然,如果由于某些原因无法完成升级,则只需将代码进行调整即可解决此问题。
### 回答3:
这个错误产生的原因是在使用Python的typing库时,尝试引入ordereddict,但是,因为Python的版本问题,导致找不到ordereddict。
Python的typing库是 Python 3.5 开始引入的,用于提供静态类型提示。而在 Python 3.8 之前, typing 模块中确实有一个 OrderedDict 的别名,叫做 ordereddict。但是在 Python 3.8 中,这个别名已经被移除了。
因此,如果你使用 Python 3.8 或者更高版本,就会出现这个错误,因为它不能再从 typing 模块中导入ordereddict了。
解决这个错误的方法就是修改相应的代码,在代码中不再引用ordereddict,或者是升级到 Python 3.8 以上的版本,因为在这些版本中,你可以直接使用内置模块 collections 中的 OrderedDict。
如果你的代码不依赖于Python 3.8及更新的版本,想要在 Python 3.7 或更旧的版本中使用 ordereddict,可以安装一个名为 ordereddict 的第三方库,然后将你的代码改为导入这个库。
from transformer import BertModel 报错 ImportError: cannot import name 'OrderedDict' from 'typing'
这个错误通常是因为您的 Python 版本过低导致的。在 Python 3.6 之前的版本中,`typing` 模块中并没有 `OrderedDict` 类型。而在 `transformer` 模块中,可能会使用到这个类型。
解决这个问题的方法是升级 Python 版本至 3.6 或以上。如果您无法升级 Python 版本,可以尝试安装 `typing_extensions` 库并导入 `OrderedDict` 类型:
```python
from typing_extensions import OrderedDict
```
这样就可以解决这个问题了。
阅读全文