Jupyter 笔记本导入错误:没有名为'sklearn'的模块



我正在尝试在本地机器上运行。我出错了ImportError:只有jupyter笔记本中没有名为"sklearn"的模块当我从命令行使用python时,无论是激活还是停用carnd-term1env,它都能很好地工作。

我已经安装了带有pip、apt-get和conda的sklearn。还尝试了conda升级scikit学习。env处于激活和停用状态。


(carnd-term1) matt@Malta:~/sdc$ conda upgrade scikit-learn
Fetching package metadata .........
Solving package specifications: .
# All requested packages already installed.
# packages in environment at /home/matt/anaconda3/envs/carnd-term1:
#
scikit-learn 0.18.1 np112py35_1

(carnd-term1) matt@Malta:~/sdc$ python3
Python 3.5.2 | packaged by conda-forge | (default, Jan 19 2017, 15:28:33) 
[GCC 4.8.2 20140120 (Red Hat 4.8.2-15)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import sklearn
>>>

...: (carnd-term1) matt@Malta:~/sdc$ ipython
...: Python 3.5.2 | packaged by conda-forge | (default, Jan 19 2017, 15:28:33) 
...: Type "copyright", "credits" or "license" for more information.
...: 
...: IPython 5.1.0 -- An enhanced Interactive Python.
...: ?         -> Introduction and overview of IPython's features.
...: %quickref -> Quick reference.
...: help      -> Python's own help system.
...: object?   -> Details about 'object', use 'object??' for extra details.
...: 
...: In [1]: import sklearn
...: 
...: In [2]: from sklearn.model_selection import train_test_split
...: 
...: In [3]: (carnd-term1) matt@Malta:~/sdc$ ipython
...:    ...: Python 3.5.2 | packaged by conda-forge | (default, Jan 19 2017, 15:28:33) 
...:    ...: Type "copyright", "credits" or "license" for more information.
...:    ...: 
...:    ...: IPython 5.1.0 -- An enhanced Interactive Python.
...:    ...: ?         -> Introduction and overview of IPython's features.
...:    ...: %quickref -> Quick reference.
...:    ...: help      -> Python's own help system.
...:    ...: object?   -> Details about 'object', use 'object??' for extra details.
...:    ...: 
...:    ...: In [1]: import sklearn
...:    ...: 
...:    ...: In [2]: from sklearn.model_selection import train_test_split
...:    ...: 
...:    ...: In [3]:

无法在jupyter笔记本上工作。

有什么想法吗?

这通常意味着两者不是同一个环境。最好检查的是sys.executable,并确保它是您所期望的。如果是笔记本电脑没有使用你期望的sys.executable,第一步可能是检查你的PATH:

which jupyter
which jupyter-notebook

最有可能的问题是笔记本堆栈不在您的conda-env中,您可以使用解决这个问题

conda install notebook

第二种最有可能的情况是,您安装了一个kernelspec(例如使用ipython kernel install --user),它正在覆盖您的env。你可以用看到你的内核在哪里

jupyter kernelspec list

为了确保您在同一个env中安装了IPython内核,您可以执行以下操作:

conda install ipykernel
ipython kernelspec install --sys-prefix

然后再次检查CCD_ 4。

让我们学习解决这类问题的通用方法。解决方案非常简单。基本上有三个步骤:

  1. 查找pip包的安装位置
  2. 正在将该目录添加到路径中
  3. 最后,导入包

查找pip包的安装位置:

!pip show PACKAGE_NAME

如果您在jupyter-notebook中执行命令,请不要在命令之前忘记此!。这将为您提供该包的路径(可能还有其他信息)。获取Location内部给定的路径。

将该目录添加到路径:jupyter中导入该包之前,应先执行以下代码。

import sys
sys.path.append('path/to/the/package')

现在导入包:

import PACKAGE_NAME

因此,对于sklearn

获取sklearn目录:

!pip show scikit-learn

添加目录:

import sys
sys.path.append('/path/to/sklearn')

例如,如果您使用的是anaconda,则site-packages文件夹将包含该环境中安装的所有conda程序包在该路径内文件夹sklearn,我们正试图导入:

import sys
sys.path.append('/home/hafiz031/anaconda3/envs/NLP/lib/python3.8/site-packages')

现在像往常一样导入所需的包:

import sklearn

参考文献:

  1. 安装了哪个版本以及scikit learn的位置

  2. Python:相对于当前运行的脚本添加到sys.path的最佳方式

如果您使用虚拟环境,则需要将Notebook安装到您的环境中:

pip install notebook

更新包可能会解决问题

conda upgrade scikit-learn

我几乎什么都试过了,终于成功了:

将您的Jupiter笔记本内核从python3.xx.x(Ipykernel以外的任何内容)更改为Ipykernel

您可以在使用的环境中安装库

pip install sklearn
conda install sklearn

相关内容

  • 没有找到相关文章

最新更新