在IPython Notebook中找不到模块

15

我有一个IPython笔记本,它以

开头。

import sklearn

当我运行它时,我得到:

ImportError: No module named sklearn

实际上,如果我在笔记本上运行以下代码片段,它不会显示scikit_learn:

import pip
installed_packages = pip.get_installed_distributions()
installed_packages_list = sorted(["%s==%s" % (i.key, i.version)
     for i in installed_packages])
print installed_packages_list

然而,当我在命令行中运行代码片段时,scikit_learn出现在列表中。

我想可能是版本问题(模块安装在一个版本上而另一个版本上没有),但是笔记本电脑和命令行都使用sys.version给出2.7.5

这里有什么问题的想法吗?

根据Cel的评论:

ipython -c "import sys; print(sys.executable)" 

执行 import sys; print(sys.executable) 命令可得到输出为 /usr/bin/python,在 notebook 中运行也是如此。

然后,执行命令 /usr/bin/python -m pip install scikit-learn,将会输出:Requirement already satisfied (use --upgrade to upgrade): scikit-learn in /Users/MyUserName,表示已经满足安装 scikit-learn 的需求(如果需要升级则使用 --upgrade 参数)。


1
为了在ipython中使用scikit-learn,您必须使用正确的pip可执行文件安装scikit-learn。我建议尝试以下操作:ipython -c "import sys;print(sys.executable)"。这应该会打印出一个Python解释器的路径。然后,您应该使用此解释器并调用<path-to-interpreter> -m pip install scikit-learn来解决您的问题。 - cel
不行,似乎没有起作用。但是,在新的笔记本上运行“import sklearn”会导致一个ImportError。 - P. Camilleri
如果你在笔记本中输入 import sys;print(sys.executable) 并且输出的结果是 /usr/bin/python,那么确实非常奇怪。 - cel
是的,没错。我也会在我的问题中提到这一点。 - P. Camilleri
你是否安装了多个版本的Python?如果是这样,你可能已经在不同的版本中安装了sklearn,而你正在尝试使用它进行导入。 - Dominik Schmidt
显示剩余4条评论
2个回答

7

我在Ubuntu上通过在笔记本顶部添加一个单元格并将模块目录附加到路径中来解决了此错误:

import sys
sys.path.append('/usr/lib/python2.7/dist-packages')

在运行pip install <something>(如numpy)时可以找到要添加的路径,它会告诉你每个软件包安装或已存在的位置。


0

/usr/bin/python 可能是一个符号链接吗?

更好的解决方案是,您应该从包含所有所需模块的 virtualenv 中运行您的 ipython 笔记本。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接