我正在尝试在本地机器上运行。我出错了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。
让我们学习解决这类问题的通用方法。解决方案非常简单。基本上有三个步骤:
- 查找pip包的安装位置
- 正在将该目录添加到路径中
- 最后,导入包
查找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
参考文献:
安装了哪个版本以及scikit learn的位置
Python:相对于当前运行的脚本添加到sys.path的最佳方式
如果您使用虚拟环境,则需要将Notebook安装到您的环境中:
pip install notebook
更新包可能会解决问题
conda upgrade scikit-learn
我几乎什么都试过了,终于成功了:
将您的Jupiter笔记本内核从python3.xx.x
(Ipykernel
以外的任何内容)更改为Ipykernel
。
您可以在使用的环境中安装库
pip install sklearn
conda install sklearn