2017-02-24 138 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, 并通过删除它来获取访问权限。