报错 之 from typing import OrderedDict ImportError: cannot import name ‘OrderedDict‘ from ‘typing‘

from typing import OrderedDict ImportError: cannot import name 'OrderedDict' from 'typing' (E:\Python\lib\typing.py)。
        这样一个问题在网上没有搜到想要的答案,因此仔细看了报错的源码,发现在"E:\Python\lib\site-packages\git\config.py", 的48 行 from typing import OrderedDict 报错,我们看报错的地方,会发现,这里是一个 if 判断语句:

if sys.version_info[:2] < (3, 7):
    from collections import OrderedDict
    OrderedDict_OMD = OrderedDict
else:
    from typing import OrderedDict
    OrderedDict_OMD = OrderedDict[str, List[_T]]

很明显,我们的代码走了第二个分支,因此去E:\Python\lib\typing.py查看发现,typing.py里的确没有这样一个类说明sys.version_info[:2]的输出 >= (3, 7)。这里的sys.version_info其实就是我们的python版本,说明大于等于3.7的python版本会走第二分支,但是配套的typing.py中没有OrderedDIct这个类,因此会报这样一个错误,这里涉及的其实是版本不匹配的问题,但是暂不能确定是哪个包的版本不对应(另外我查到只有python版本大于3.5才可以正常使用typing)。因为我的python版本是3.7.1,因此就这样修改代码:

if sys.version_info[:2] <= (3, 7): # 注意等号
    from collections import OrderedDict
    OrderedDict_OMD = OrderedDict
# else:
    # from typing import OrderedDict
    # OrderedDict_OMD = OrderedDict[str, List[_T]]

这样代码就可以继续运行了。
 

评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值