繁体   English   中英

在 virtualenv 中运行 Jupyter notebook:安装的 sklearn 模块不可用

[英]Running Jupyter notebook in a virtualenv: installed sklearn module not available

我已经安装了创建的virtualenv machinelearn并安装在该环境中的几个Python模块(大熊猫,SciPy的和sklearn)。

当我运行 jupyter notebook 时,我可以在我的 notebook 中导入 pandas 和 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) me@yourbox:~/path/to/machinelearn$ python -c "import pandas, scipy, sklearn"
(machinelearn) me@yourbox:~/path/to/machinelearn$ 

如何在运行在 virtualenv 中的 jupyter notebook 中导入 sklearn?

您可能还没有在您的 virtualenv 中安装 jupyter / IPython。 请尝试以下操作:

python -c "import IPython"

并检查在$PATH找到的jupyter命令是否来自 venv 的bin文件夹:

which jupyter

对于 powershell 控制台中的 Windows 用户,您可以使用以下命令检查$env:Path中的jupyter命令是否是您 venv 的Scripts文件夹中的命令:

get-command jupyter

编辑:如果这是问题所在,只需在您的 venv 中运行python -m pip install jupyter jupyter。

编辑 2 :实际上您可能还需要:

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

然后在 jupyter 用户界面中切换名为“my-virtualenv-name”的内核。

另一种方法是安装一个全局 jupyter,但指向不同的内核作为后端运行。

他们的文档中概述了这种方法:http ://help.pythonanywhere.com/pages/IPythonNotebookVirtualenvs

在链接断开的情况下复制以下内容:您可以为您的 IPython 笔记本使用 virtualenv。 请按照以下步骤操作:

将 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 notebook 菜单中看到您的内核:Kernel -> Change kernel 并能够切换到它(您可能需要在它出现在列表中之前刷新页面)。 从那时起,IPython 将记住该笔记本使用哪个内核。

要将 Jupyter notebook 与虚拟环境(使用 virtualenvwrapper)以及安装在该环境中的软件包一起使用,请按照以下步骤操作:

  1. 创建虚拟环境

    mkvirtualenv --no-site-packages --python=/your/python/path your_env_name
  2. 激活虚拟环境

    workon your_env_name
  3. 安装 Jupyter 和其他软件包

    pip install jupyter, numpy
  4. 将新内核添加到您的 Jupyter 配置中

    ipython kernel install --user --name=your_env_name
  5. 完毕。 您现在可以在虚拟环境下使用 Jupyter notebook。

     jupyter-notebook

免责声明:该问题已得到回答,但隐藏在其中一个答复中。 我用谷歌搜索并花了一些时间找到正确的答案。 所以我只是总结一下,这样有同样问题的人可以很容易地关注。

假设 jupyter 安装在您的机器上,而不是安装在虚拟环境中。

在 Jupyter notebook 中使用虚拟环境

VENV_NAME = "你的虚拟环境名称"

1) virtualenv VENV_NAME

2) source venv/bin/activate

3)如果不存在,请添加此包: pip3 install ipykernel

4)然后执行这个命令: ipython kernel install --user --name=VENV_NAME

5) 现在打开 Jupyter Notebook 并在更改内核中选择VENV_NAME

6) 要安装新包,请在终端中执行pip3 install <PACKAGE NAME>并重复步骤 4。

希望能帮助到你!

使用 python3 -m venv 命令创建 virtualenv

我和你有同样的问题。 就我而言,我使用命令创建了 virtualenv

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

问题是我无法在虚拟环境中安装 jupyter,因为它已经在 system-site-package 中(当您尝试安装它时,它会告诉您“要求已经满足”)。

要安装 jupyter,(在第一个实例中 pip,使用此命令不会在您的虚拟环境中安装)但仍然可以访问 system-site-package,您可以运行:

python3 -m venv ./my_virtual_env

激活您的虚拟环境,运行pip3 install jupyter (和pip3 install pip ),然后打开文件 ./my_virtual_env/pyvenv.cfg 中的 include-system-site-packages 选项。

在您的环境停用和重新激活后,您将可以访问系统站点包。

使用 virtualenv 命令创建 virtualenv

鉴于此答案,您可以通过创建文件 ./my_virtual_env/lib/python3.4/no-global-site-packages.txt 来阻止对系统站点包的访问,并通过删除它来恢复访问权限。

无需全局添加新内核的解决方案!!

  1. 通过创建一个新的虚拟环境
python3 -m virtualenv envname

  1. 激活您的环境并在其中安装 jupyter
pip install jupyter

在安装 jupyter 之前,您必须确保的一件事是您没有安装以下软件包。

ipykernel             
ipython               
ipython-genutils      
ipywidgets            
jupyter               
jupyter-client        
jupyter-console     
jupyter-core 

如果您以前安装过它们,请先通过pip uninstall卸载它们。

  1. 在激活的 virtualenv 中安装所需的软件包并在其中启动 jupyter,瞧!

如果您使用以下方法创建了虚拟环境,您仍然可以在虚拟环境中安装 jupyter:

python -m venv --system-site-packages path/to/my-venv

只需这样做:

activate-your-env
pip install -I jupyter

你现在准备好了

jupyter notebook

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM