Python导入sensitivity包报ImportError:无法导入_get_standard_colors
该错误由库版本不兼容直接导致:
sensitivity库依赖pd_utils库,而pd_utils的plot模块调用了pandas的私有内部方法_get_standard_colors。这个方法在pandas 1.3.x及更早版本中存放在pandas.plotting._matplotlib.style路径下,在pandas 1.4及以上版本中要么被更名要么被移动了路径,你当前环境的pandas版本过高,停止维护的pd_utils没有适配高版本pandas,因此抛出导入失败错误。
方案1:降级pandas到兼容版本
安装1.3.5版本的pandas即可解决适配问题,对应执行命令:
pip环境下执行:pip install pandas==1.3.5
conda环境下执行:conda install pandas=1.3.5
为避免影响环境内其他依赖高版本pandas的工具,建议为sensitivity相关项目单独新建虚拟环境操作。方案2:手动修改pd_utils源码适配高版本pandas
找到报错提示的pd_utils plot模块路径:~\anaconda3\envs\name_of_my_env\lib\site-packages\pd_utils\plot.py,将第4行的导入语句:from pandas.plotting._matplotlib.style import _get_standard_colors
替换为:from pandas.plotting._matplotlib.tools import _get_standard_colors
pandas 1.4+版本已将该方法移动到tools模块下,修改后即可正常导入sensitivity库。方案3:替换使用其他活跃维护的灵敏度分析库
如果不想调整现有环境的依赖版本,可以使用SALib等目前仍在迭代维护的灵敏度分析库,功能完全覆盖sensitivity库的可用能力。
内容的提问来源于stack exchange,提问作者Ahmed Khalifa

