[英]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筆記本的想法都將受到高度贊賞。 還有更多我可以檢查的東西嗎? 我該如何讓它發揮作用?
我嘗試過激活/停用我的環境,重新啟動內核等也沒有成功。
編輯:我沒有問題導入其他包,如numpy
或scipy
事實證明,刪除~/Library/Jupyter/kernels
文件夾並重新啟動我的筆記本就可以了。 即使看起來jupyter kernelspec list
中的內核是我所期望的。 不過它現在正在運作。 它似乎不是一個sklearn
獨家問題。 我基本上按照這個人的寫作。
確保你安裝了numpy
和scipy
- scikit-learn
取決於它們但不會為你安裝它們。
此外,安裝后,重新啟動筆記本服務器。
有一個簡單的解決方案,即使用Anaconda-Navigator GUI手動安裝scikit-learn。 因此,首先選擇您打算使用的環境,或者創建除基礎(根)級別之外的新環境。 接下來,啟動Anaconda-Navigator,方法是啟動應用程序或在命令提示符下鍵入“anaconda-navigator”,前提是已激活適當的環境。 接下來,通過單擊左側面板上的圖標,轉到GUI上的“Environments”窗口。 然后,選擇您之前決定使用的更高級別環境。 在右側面板上,您現在應該可以看到此環境中所有已安裝的“conda”軟件的列表。 之后,在右側面板頂部“通道”按鈕左側的字段中選擇“未安裝”。 從列表中選擇scikit-learn,然后選中其名稱左側的框。 最后,單擊右下角顯示的“應用”按鈕以安裝軟件。 現在你應該全力以赴。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.