繁体   English   中英

ModuleNotFoundError:Jupyter 笔记本中的“sklearn”

[英]ModuleNotFoundError: 'sklearn' in Jupyter notebook

在 Win10 上的 Python 3.7 上使用 Conda (4.8)。 我使用 conda conda install scikit-learn 尝试了几件事:还将它安装在 env conda install -n my_env scikit-learn 还尝试安装conda install -c anaconda ipython - 没有任何效果。

我可以列出来:

scikit-learn              0.22             py37h6288b17_0  

但是在 juypter notebook 中from sklearn.datasets import fetch_lfw_pairs得到错误(也尝试过其他几个命令) ModuleNotFoundError: No module named 'sklearn'

但是如果我使用 Anaconda UI Navigator 来启动 notebook 一切正常

更新
尽管社区付出了很多努力并提供帮助和支持(如下所示),我还是尝试了这个命令行选项对我不起作用。 同时,也可以从 Anaconda UI 本身启动 Jupyter notebook。 这一直对我有用 - 不需要配置或设置(无) 我还没有发现任何限制等(你确实得到了完全相同的笔记本)。 对于您可能需要微调配置 cmd 行的高级/独特用例可能会有所帮助,我不在那里。 快乐编码

很可能,您在启动笔记本时加载了错误的内核。 这是设置环境的准系统方法:

conda create -n testenv python=3.7 -y

conda activate testenv

conda install scikit-learn
conda install ipython
conda install notebook

python -m ipykernel install --user --name testenv

当您在浏览器中单击new时,您将在 python3 旁边有一个附加选项,即您刚刚注册的内核。 我刚刚用 anaconda 4.7 测试了这个,我可以导入 sklearn。

编辑:

答案中的代码创建了一个新的 python 环境。 然后,它会在该环境中安装 ipython 和 jupyter notebook,并确保该环境可以与 jupyter notebook 一起使用(即注册 ipykernel)。

现在当然除了 scikit learn 之外,在该特定环境中还没有安装其他库。

所以,如果你想使用更多的库,你必须去命令行,激活环境,并安装你想使用的库:

conda activate testenv
conda install scipy numpy matplotlib

然后从环境中运行 jupyter notebook,在你安装了你想要的所有东西之后(并且在关闭命令提示符或停用环境之后),你可以做

conda activate testenv
jupyter notebook

在命令提示符中。

Jupyterlab 通常会使用您启动它的环境。 例如:

  1. 如果您先激活my_env然后从终端执行jupyter lab ,它应该检测环境。
  2. 如果失败,请转到Kernel -> Change Kernel并选择要使用的内核。

注意:在创建新内核时,我总是使用display-name参数来帮助。 您可以执行以下操作:

python -m ipykernel install --user --name my_env --display-name "Python (my_env)"

希望这可以帮助。

要解决此问题,您需要在Anaconda 中手动安装此包。

如何安装? 打开您的Anaconda Prompt并运行以下命令:

conda install -c conda-forge scikit-learn

然后重启Jupyter Notebook并导入这个包。

我认为问题是环境没有激活。 先尝试conda activate my_env ,然后输入jupyter notebook

你可以做的第一件事是:

import sys
print(sys.path)

检查/path/to/anaconda/envs/my_env/lib/python3.7/site-packages中是否存在/path/to/anaconda/envs/my_env/lib/python3.7/site-packages

我发现打印当前的sys.path很有用,这样我就知道它在看哪里。

conda info --envs

当 testEnv 存在时:

conda activate testEnv

conda list scikit-learn

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM