2017-02-24 77 views
6

我已經安裝了一個virtualenv machinelearn並在該環境中安裝了幾個python模塊(熊貓,scipy和sklearn)。在virtualenv中運行Jupyter筆記本:安裝sklearn模塊不可用

當我運行jupyter筆記本電腦,我可以導入熊貓和SciPy的在我的筆記本電腦 - 然而,當我嘗試導入sklearn,我收到以下錯誤信息:

import sklearn 

--------------------------------------------------------------------------- 
ImportError        Traceback (most recent call last) 
<ipython-input-1-8fd979e02004> in <module>() 
----> 1 import sklearn 

ImportError: No module named 'sklearn' 

我能夠導入所有模塊,在命令行 - 所以我知道他們已成功安裝:

(machinelearn) [email protected]:~/path/to/machinelearn$ python -c "import pandas, scipy, sklearn" 
(machinelearn) [email protected]:~/path/to/machinelearn$ 

我怎樣才能導入sklearn在一個virtualenv中運行我jupyter的筆記本嗎?

+0

我想你還沒有用正確的python可執行文件啓動你的筆記本。它寫在頁面的右側,應該有一個下拉菜單。檢查它是否是用virtualenv而不是root安裝的conda。 –

回答

4

你可能還沒有在你的virtualenv中安裝jupyter/IPython。請嘗試以下操作:

python -c "import IPython" 

,並檢查您$PATH發現jupyter命令是一個從VENV的bin文件夾:

which jupyter 

對於在PowerShell控制檯窗口的用戶,可以使用下面來檢查您$env:Pathjupyter命令是從你的Scripts文件夾中的一個VENV:

get-command jupyter 

編輯:如果這是問題,請在您的venv中運行python -m pip install jupyter

+0

有趣的是,我沒有在virtenv中安裝IPython,但運行'which jupyter'在'/ usr/bin/jupyter'中顯示它,我試着在virtenv中安裝Jupyter,看看是否能解決問題。 –

+1

不,在我的virtenv中安裝jupyter並沒有解決問題,我仍然得到錯誤消息:'ImportError:No module named'sklearn'' –

+0

其實,我創建了一個新的virtenv(--no-site-packages)和pip安裝了我想要的模塊 - 現在它可以工作。謝謝 –

5

另一種方法是安裝一個全局jupyter,但指向不同的內核作爲後端運行。

這種方法在這裏列出他們的文檔:下面 http://help.pythonanywhere.com/pages/IPythonNotebookVirtualenvs

複製的情況下,鏈接中斷: 可以使用的virtualenv您IPython的筆記本電腦。遵循以下步驟:

安裝IPython的內核模塊到您的virtualenv

workon my-virtualenv-name # activate your virtualenv, if you haven't already 
pip install ipykernel 

現在運行的內核「自安裝」腳本:

python -m ipykernel install --user --name=my-virtualenv-name 

更換--name參數作爲適當的。

您現在應該能夠在IPython筆記本菜單中看到您的內核:內核 - >更改內核並且能夠切換到它(您可能需要在頁面出現在列表中之前刷新頁面)。 IPython將會記住那個筆記本使用哪個內核。

+1

你不知道這救了我多少痛苦(和cpu噪音)。最後,我在Jupyter中運行GPU keras/tensorflow。來自同伴騎行者和數據極客的歡呼聲。 –

0

的virtualenv與python3 -m VENV命令

的創作我有同樣的問題,因爲你的。 在我來說,我創造了virtualenv中使用命令

python3 -m venv ./my_virtual_env --system-site-packages 

問題是我無法安裝jupyter的虛擬環境中,因爲它已經在系統站點包(當你嘗試安裝它,它告訴你「需求已經滿意」)。

要安裝jupyter,(並在一審點子,即不會安裝既不用這個命令你的虛擬環境),但仍可以訪問系統內的包,你可以運行:

python3 -m venv ./my_virtual_env 

激活虛擬環境,運行pip3 install jupyter(和pip3 install pip),然後在文件./my_virtual_env/pyvenv.cfg中打開選項include-system-site-packages。

停用並重新激活您的環境後,您將有權訪問系統站點包。

的virtualenv的創作與virtualenv中命令

鑑於this answer可以防止訪問系統站點包通過創建一個文件./my_virtual_env/lib/python3.4/no-global-site-packages。 txt, 並通過刪除它來獲取訪問權限。