跳至主要内容

排查 Python 中 No module named 'sklearn' 错误信息

通过我们详尽且易于操作的在线指南,快速修复 ModuleNotFoundError: No module named 'sklearn' 异常。
· 5分钟 阅读

使用 AI 探索

Scikit-learn(常缩写为 sklearn)是一款广泛用于数据分析与建模(包括机器学习)任务的 Python 库。不过,渴望尝试 sklearn 的新用户,往往会在遇到一个不熟悉、且不易排查的错误信息时感到沮丧。

本教程将带您排查并修复 No module named 'sklearn' 错误信息,帮助我们回到正轨,使用 sklearn 丰富的算法与工具进行数据分析和建模。在此过程中,我们还会学习到更通用的软件包安装故障排查技能,从而成为更强的 Python 程序员。若需回顾 scikit-learn 包的要点,开始前不妨查看我们的 Scikit-Learn 速查表。

理解 Python 中的 No module named 'sklearn' 错误信息

请看下图,这里我们尝试导入 sklearn,结果返回了 ModuleNotFoundError 异常。

Example in Python environment ModuleNotFoundError: No module named 'sklearn'Python 环境中的 ModuleNotFoundError


顾名思义,ModuleNotFoundError 是一种特定的 ImportError,表示 Python 找不到某个模块。在这里是 sklearn,但也可能是其他任何模块,比如 numpy 或 pandas。

我们的 Python 数据科学入门课程中包含许多导入并使用 numpy 等模块的示例。 

导致 Python ModuleNotFoundError 的常见原因

出现 No module named 'sklearn' 错误信息通常有几种常见原因,其中主要包括: 

  • 未安装 sklearn:最常见的原因是我们的 Python 环境中尚未安装 scikit-learn。

  • 安装不正确:有时虽然安装了 scikit-learn,但并未正确安装,因而在导入库模块时出现问题。

  • 环境配置或 Python 路径问题:最常发生在使用虚拟环境或采用了不同的 Python 解释器时。

幸运的是,按照循序渐进的方法,我们很可能就能解决问题。让我们继续。 

排查 Python ModuleNotFoundError 错误信息

验证 scikit-learn 是否已安装

排查的第一步是确保 scikit-learn 已在我们的 Python 环境中正确安装。我们可以在终端或命令提示符中运行以下命令:

py -m pip list

该命令会按字母顺序列出我们 Python 环境中安装的所有库。我们向下滚动列表,确认其中包含 scikit-learn。

Example list of installed Python packages in Visual Studio Code discovered using pip已安装包示例列表


如果检查后发现未安装 scikit-learn,可根据我们的环境,使用 pip 或 conda 进行安装:

pip install scikit-learn
conda install scikit-learn

关于 pip 等包管理器的更多用法,请参阅我们的Pip Python 包管理教程。 

重启 Python 内核

如果我们在 Jupyter Notebook 或 Spyder 等 IDE 中工作,下一步可以考虑重启 Python 内核。之所以这样做,是因为即使刚刚安装或重新安装了 scikit-learn,更改也可能不会立刻在当前的交互式会话中生效。重启内核会重新加载环境与库路径。这是一个简单但关键的步骤,能修复各类错误。

Restarting our Python Jupyter kernel in Visual Studio Code重启我们的 Jupyter 内核

检查环境变量与 Python 路径

接下来,我们需要确保 Python 环境已正确配置,能够定位到 scikit-learn 包。此步骤至关重要,因为它能确保 Python 在正确的目录中查找我们已安装的 scikit-learn。

这里我们检查 PYTHONPATH 环境变量,确保其中包含 scikit-learn 的安装目录。可在 Python 脚本或解释器中运行以下命令:

import sys
print(sys.path)

运行 import sys 并执行 print(sys.path) 后,我们可以看到 Python 当前会检查的目录列表。如果列表中没有包含 scikit-learn 的安装目录,Python 就无法找到并导入 scikit-learn。

最后,我们还可以核实当前使用的 Python 解释器是否对应于安装了 scikit-learn 的环境。请参阅我们的详细教程,了解如何在您的计算机上搭建数据科学环境。 

重新安装 scikit-learn

如果以上方法都无效,可以考虑重新安装 scikit-learn,以解决潜在的安装问题。文件可能在下载或安装过程中因网络、进程中断或磁盘错误而损坏;也可能因为先前的安装遗留,导致依赖冲突。

我们可以使用 pip 或 conda 卸载后再重新安装,以确保一次干净的安装。 

pip uninstall scikit-learn

pip install scikit-learn
conda uninstall scikit-learn

conda install scikit-learn

验证安装与环境设置

作为最后一步,一旦我们认为已解决 No module named 'sklearn' error,不妨验证一下 scikit-learn 是否正确安装、环境是否配置妥当,以更安心。

我们可以在 Python 脚本或解释器中导入 scikit-learn 并检查是否存在导入错误。

import sklearn

print(sklearn.__version__)

如果未出现任何错误,则说明 scikit-learn 已正确安装,您就可以在机器学习项目中开始使用它了!

总结

遇到 No module named 'sklearn' 错误可能令人沮丧,但借助正确的排查步骤,我们可以迅速解决问题,继续开展机器学习任务。 

我也鼓励您进一步学习机器学习的基础理论以及一些常见模型,例如k-means 聚类、逻辑回归或SVM。您还可以学习一些编码最佳实践,以避免今后再遇到更多令人头疼的错误信息。

Amberle McKee

作者

Amberle McKee

我拥有博士学位,在生物研究环境中从事数据相关工作已有13年。我使用包括 Python、MATLAB 和 R 在内的多种编程语言开发软件。我热衷于与世界分享我对学习的热爱。

主题