PyCharm Jupyter导入sklearn时报_argmax导入错误问题咨询
问题原因
该报错的核心触发逻辑是:PyCharm中Jupyter Notebook绑定的Python内核环境,与普通Python文件运行使用的环境不一致,两个环境下的scikit-learn存在版本/文件不匹配问题。_argmax是scikit-learn旧版本中的内部工具符号,新版本已经将其从sklearn.utils.fixes模块中移除。当Notebook内核加载的sklearn存在跨版本文件残留、依赖版本不对应问题时,就会触发该导入错误;而普通Python文件调用的是依赖完整、版本匹配的环境,因此可以正常执行代码。
排查步骤
先确认两个运行环境的差异,分别在Notebook单元格、普通Python文件中执行以下代码,对比输出结果:
import sys # 打印当前使用的Python解释器路径 print(sys.executable) import sklearn # 打印当前加载的scikit-learn版本 print(sklearn.__version__)
如果两段代码输出的解释器路径不一致,即可确认是内核环境绑定错误导致的问题。
解决方案
- 切换Notebook内核:在PyCharm的Jupyter界面顶部工具栏,找到内核选择下拉菜单,选中普通Python文件正在使用的对应解释器,重启内核后重新运行导入代码即可。
- 修复当前内核的sklearn依赖:如果需要保留当前使用的Notebook内核,直接在Notebook单元格中执行以下命令,强制重装完整的scikit-learn包,解决跨版本文件残留问题,执行完成后重启内核:
pip install --upgrade --force-reinstall scikit-learn
注意:无需单独安装或升级sklearn的子依赖,全量强制重装即可自动修复内部模块的引用关系。
- 排查重名文件冲突:如果重装后问题仍存在,检查当前Notebook的工作目录下,是否存在命名为
sklearn.py的自定义文件、或者手动修改过的sklearn相关源码文件,这类文件会被Python优先导入,覆盖官方库的模块内容,删除重名/修改过的冲突文件即可恢复正常。
内容的提问来源于stack exchange,提问作者JavaMan
相关产品推荐
相关产品推荐

