python导包报错以及处理方法(1)

352 阅读2分钟

引言

  • 由于最近测试了多个项目,每个项目都有各自包的版本,又都图省事抱有侥幸心理就把所有的项目用的包都放到了一个环境下,终于在不懈努力的作死后开始互相报错了
  • 报错信息如下:

1. "ImportError: cannot import name ‘_validate_lengths‘ from ‘numpy.lib.arraypad"

2. " ImportError: cannot import name ‘OrderedDict‘ from ‘typing'"

  • 报错截图如下:
  • 1 err1.png
  • 2 err2.png

解决方法如下:

error1

  • 分析原因是Numpy的版本太高导致,可尝试卸载numpy并安装低版本的
  • 但由于其他模块依赖于高版本的numpy,于是只能根据错误提示点击到arrycrop.py 文件,并将一开始 import部分 替换成 如图所示的条件选择语句:
import numpy as np
#from numpy.lib.arraypad import _validate_lengths
from distutils.version import LooseVersion as Version
old_numpy = Version(np.__version__) < Version('1.16')
if old_numpy:
	from numpy.lib.arraypad import _validate_lengths
else:
	from numpy.lib.arraypad import _as_pairs

  • 个人测试参考资料里少了头一句那个numpy写为np,修改为以上代码后,不再报错
  • 个人建议,为了少报错还是这样分情况使用比较好,不然就会出现一连串的报错, 极其头疼

error2

  • 分析原因与err1其实差不多,也是包之间不是配的原因,再次强调一定要每个项目配一个环境,不然真的会各种冲突的
  • 解决方法也类似,依旧是找到源码换一种方式
pip install typing_extensions
# (速度慢可以加上国内源:-i https://pypi.tuna.tsinghua.edu.cn/simple)
  • 然后进行替换
from typing import Any, Callable, List, Optional, Sequence, Tuple
from typing_extensions import OrderedDict
# 之前的代码是一行导入 from typing import Any, Callable, List, Optional, Sequence, Tuple,OrderedDict
  • 经个人测试可以解决所遇到问题,参考资料如下:

参考资料

  • err1
  • err2
  • 这也仅仅是一天报错的内容,真是不知道后面还要有多少因为环境问题导致的包冲突.....