終端能到import模塊 解決jupyter notebook無法導入的問題

這個問題讓我查瞭許多天才解決,為瞭避免後面的人重復走彎路,記錄下來。

問題描述:

我在ubuntu 下編譯安裝瞭caffe ,在命令行模式下可以import caffe ,但是在jupyter notebook 中無法import caffe,同樣的 我安裝的pytorch 也遇到瞭類似的問題。

解決方案:

首先在打開終端,輸入python , 然後import sys,最後執行sys.executable 結果如下圖,路徑是:/home/jack/anaconda2/bin/python

第二 在終端 輸入 jupyter notebook 後,新建一個ipynb 文件,同樣是 import sys,sys.executable,結果輸出是:/usr/bin/python 如下圖:

也就是說終端的路徑 與jupyter notebook 的路徑不一致,需要在終端中輸入:

ipython kernelspec list

結果如下

此時需要進入:/home/jack/.local/share/jupyter/kernels/python2/ 路徑在修改 kernel.json 文件將

{
 "display_name": "Python 2", 
 "language": "python", 
 "argv": [
 "/usr/bin/python", % 修改為 :/home/jack/anaconda2/bin/python
 "-m", 
 "ipykernel_launcher", 
 "-f", 
 "{connection_file}"
 ]
}

文件中的 /usr/bin/python 修改 為/home/jack/anaconda2/bin/python,然後保存重啟即可。

補充:Mac在終端正常導入的模塊,而在jupyter notebook無法導入的問題

1、在網上搜索瞭很久,找到瞭問題的關鍵,如下:

在jupyter中新建文件輸入如下代碼,查看目前的編譯路徑:

此時發現 jupyter模式下使用的python編譯路徑與其他模式下的python編譯路徑是不一樣的,這就是為什麼無法導入已經安裝好的包的原因。

2、出現上述情況的原因

在博客中看到的很多把虛擬環境添加jupyter中的操作流程如下:

1、在base環境中安裝ipykernel

pip install ipykernel

2、創建虛擬環境、同時添加ipykernel

conda create -n env_name python=3.5 ipykernel

3、切換到虛擬環境

conda activate env_name

4、將環境寫入notebook的ipykernel中

python -m ipykernel install --user --name env_name --display-name "在jupyter中顯示的環境名稱" 

上面的安裝過程確實可以實現將虛擬環境加入到juyter中,但是由於是在base中安裝的ipykernel,或者忘記激活虛擬環境,或者由於實在base中安裝的ipykernel,導致無法在激活的虛擬環境中使用 -m ipykernel,很多人直接在base中執行命令4,導致加入到jupyter的虛擬環境的python編譯器使用的是base的,因此導致瞭上述問題。

解決辦法

直接切換至虛擬環境(命令如上),安裝ipykernel後,再執行命令4,結果如圖所示,可以看到編譯路徑已經切換至虛擬環境所在路徑:

以上為個人經驗,希望能給大傢一個參考,也希望大傢多多支持WalkonNet。如有錯誤或未考慮完全的地方,望不吝賜教。