簡體   English   中英

錯誤:在Jupyter Notebook中找不到模塊(sklearn)

[英]Error: module not found in Jupyter Notebook (sklearn)

我在我的Jupyter筆記本中導入scikit-learn有一個問題,我不知道為什么這不起作用。 我不記得以前在使用其他軟件包時遇到此問題。 我已經看到幾個人與這個特定模塊有類似問題的線程,但沒有提出的檢查已經解決了我的問題,也沒有向我透露可能有什么問題。 我試圖在下面添加盡可能多的信息,試圖找出為什么拒絕工作。

我使用anaconda來管理我的軟件包, scikit-learn安裝如下:

source activate python3
conda install scikit-learn
Fetching package metadata .............
Solving package specifications: .

# All requested packages already installed.
# packages in environment at /Users/overaa/anaconda/envs/python3:
#
scikit-learn              0.19.1           py36hffbff8c_0  

現在,如果我直接從命令行啟動python會話, import sklearn按預期工作,並正確導入模塊。 在Jupyter中做同樣的事情會導致

ModuleNotFoundError: No module named 'sklearn'

我檢查了很多東西。 首先,確保我的jupyter和jupyter-notebook指向正確的環境

which jupyter
/Users/overaa/anaconda/envs/python3/bin/jupyter
which jupyter-notebook
/Users/overaa/anaconda/envs/python3/bin/jupyter-notebook

所以筆記本檢查了。

然后從命令行python會話(在我啟動筆記本的環境中):

>>> import sklearn
>>> sklearn.__file__
'/Users/overaa/anaconda/envs/python3/lib/python3.6/site_packages/sklearn/__init__.py'

所以scikit-learn也安裝在合適的環境中。

現在比較我正在運行相同的版本;

從命令行:

>>> print(sys.version)
3.6.1 |Continuum Analytics, Inc.| (default, May 11 2017, 13:04:09)
[GCC 4.2.1 Compatible Apple LLVM 6.0 (clang-600.0.57)]

來自Jupyter筆記本:

print(sys.version)
3.6.1 |Continuum Analytics, Inc.| (default, May 11 2017, 13:04:09
[GCC 4.2.1 Compatible Apple LLVM 6.0 (clang-600.0.57)]

比較包路徑。

從命令行:

import site
print(site.getsitepackages())
['/Users/overaa/anaconda/envs/python3/lib/python3.6/site-packages']

來自Jupyter筆記本:

import site
print(site.getsitepackages())
['/Users/overaa/anaconda/envs/python3/lib/python3.6/site-packages']

同樣適用於我的sys.path

命令行:

>>> print(sys.path)
['', '/Users/overaa/anaconda/envs/python3/lib/python36.zip', 
'/Users/overaa/anaconda/envs/python3/lib/python3.6', 
'/Users/overaa/anaconda/envs/python3/lib/python3.6/lib-dynload', 
'/Users/overaa/anaconda/envs/python3/lib/python3.6/site-packages', 
'/Users/overaa/anaconda/envs/python3/lib/python3.6/site_packages/setuptools-27.2.0-py3.6.egg']

Jupyter:

print(sys.path)
['', '/Users/overaa/anaconda/envs/python36/lib/python36.zip', 
'/Users/overaa/anaconda/envs/python36/lib/python3.6', 
'/Users/overaa/anaconda/envs/python36/lib/python3.6/lib-dynload', 
'/Users/overaa/anaconda/envs/python36/lib/python3.6/site-packages', 
'/Users/overaa/anaconda/envs/python36/lib/python3.6/site-packages/setuptools-27.2.0-py3.6.egg', 
'/Users/overaa/anaconda/envs/python36/lib/python3.6/site-packages/IPython/extensions', 
'/Users/overaa/.ipython']

所以一切都是一樣的,除了包含setuptools的目錄在命令行版本和Jupyter版本之間有所不同。 我還注意到scikit-learn似乎安裝在site_packages子目錄中,而不是安裝在site-packages子目錄中,這是Jupyter似乎在尋找模塊的地方。 所以我嘗試了兩件事。 首先,在運行我的筆記本之前,在我的.bash_profile中添加我的JUPYTER_PATH路徑。

export JUPYTER_PATH="/Users/overaa/anaconda/envs/python36/lib/python3.6/site-packages:$JUPYTER_PATH"

在嘗試導入scikit-learn之前,我還試圖直接在jupyter筆記本中將它添加到我的sys.path

sys.path.append("/Users/overaa/anaconda/envs/python3/lib/python3.6/site_packages")

兩者都無濟於事, sklearn仍拒絕在我的筆記本中導入。

任何關於為什么scikit-learn沒有被導入我的Jupyter筆記本的想法都將受到高度贊賞。 還有更多我可以檢查的東西嗎? 我該如何讓它發揮作用?

我嘗試過激活/停用我的環境,重新啟動內核等也沒有成功。

編輯:我沒有問題導入其他包,如numpyscipy

事實證明,刪除~/Library/Jupyter/kernels文件夾並重新啟動我的筆記本就可以了。 即使看起來jupyter kernelspec list中的內核是我所期望的。 不過它現在正在運作。 它似乎不是一個sklearn獨家問題。 我基本上按照這個人的寫作。

確保你安裝了numpyscipy - scikit-learn取決於它們但不會為你安裝它們。

此外,安裝后,重新啟動筆記本服務器。

有一個簡單的解決方案,即使用Anaconda-Navigator GUI手動安裝scikit-learn。 因此,首先選擇您打算使用的環境,或者創建除基礎(根)級別之外的新環境。 接下來,啟動Anaconda-Navigator,方法是啟動應用程序或在命令提示符下鍵入“anaconda-navigator”,前提是已激活適當的環境。 接下來,通過單擊左側面板上的圖標,轉到GUI上的“Environments”窗​​口。 然后,選擇您之前決定使用的更高級別環境。 在右側面板上,您現在應該可以看到此環境中所有已安裝的“conda”軟件的列表。 之后,在右側面板頂部“通道”按鈕左側的字段中選擇“未安裝”。 從列表中選擇scikit-learn,然后選中其名稱左側的框。 最后,單擊右下角顯示的“應用”按鈕以安裝軟件。 現在你應該全力以赴。

Anaconda-Navigator GUI的屏幕截圖

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM