报错 之 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]]

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

你可能感兴趣的:(坑)