关于python:jupyter笔记本在不同的环境中运行内核

jupyter notebook running kernel in different env

我让自己陷入了某种可怕的虚拟环境混乱。帮助?!

我使用conda管理环境。直到最近,我只有一个python2-jupyter笔记本内核,但我决定把自己拖到21世纪,安装了一个python3内核;我忘记了我是怎么做到的。

我的主要(Python)Python默认为2.7。

所以,我在这里,愉快地尝试着从我闪亮的新python3内核中使用美丽的汤,我似乎无法在任何环境中找到包装。VIZ(全部来自笔记本电脑):

1
2
3
from bs4 import BeautifulSoup

-> ImportError: No module named 'bs4'

好的,好的,我会用Shell Magic安装它。正确的?对吗?

1
2
3
4
5
6
7
8
9
10
11
12
13
! pip install bs4

--> Collecting bs4
  Downloading bs4-0.0.1.tar.gz
Requirement already satisfied (use --upgrade to upgrade): beautifulsoup4 in /Users/[MY-USER]/anaconda/lib/python2.7/site-packages (from bs4)
[...]
Successfully built bs4
Installing collected packages: bs4
Successfully installed bs4-0.0.1

from bs4 import BeautifulSoup

-> ImportError: No module named 'bs4'

哦,不。即使我运行的是python3内核,它是否认为我处于2.7环境中?那不行。

1
2
3
4
5
6
7
! conda info --envs
--> # conda environments:
#
flaskenv                 /Users/[MY-USER]/anaconda/envs/flaskenv
mesa                     /Users/[MY-USER]/anaconda/envs/mesa
py35                     /Users/[MY-USER]/anaconda/envs/py35
root                  *  /Users/[MY-USER]/anaconda

好的,我可以解决这个问题。其中之一是3.5环境。

1
2
3
4
5
6
7
8
9
10
11
! source activate py35
--> prepending /Users/[MY-USER]/anaconda/envs/py35/bin to PATH

! conda install beautifulsoup4
--> Fetching package metadata .......
Solving package specifications: ..........

# All requested packages already installed.
# packages in environment at /Users/[MY-USER]/anaconda:
#
beautifulsoup4            4.4.1                    py27_0

关于…

1
2
! pip install bs4
--> Requirement already satisfied (use --upgrade to upgrade): bs4 in /Users/[MY-USER]/anaconda/lib/python2.7/site-packages

更多关于……

1
2
3
from bs4 import BeautifulSoup

-> ImportError: No module named 'bs4'

阿格!!!!为了解决这个问题(并重新运行一点工作),我是否需要终止内核?杀掉内核还能起作用吗?如何让我的jupyter内核知道它应该在什么环境下运行?

谢谢!


这是伊皮顿/朱彼特的一个棘手的部分。可用的内核集与启动Jupyter笔记本时的virtualenv无关。诀窍是在您希望唯一标识自己的环境中设置ipykernel包。从多个ipykernels上的文档,

1
2
3
source activate ENVNAME
pip install ipykernel
python -m ipykernel install --user --name ENVNAME --display-name"Python (whatever you want to call it)"

如果您只想在Conda环境中拥有一个单独的python 3内核,只需使用python -m ipykernel install --user,它就会将默认的python重置为virtualenv中的python。

是的,您需要重新启动内核并重新运行前面的步骤。

另请参见在IPython笔记本中同时使用python 2.x和python 3.x。


@如果已经创建了您的环境,tschundler的解决方案就可以完美地工作。

如果您想在创建虚拟环境时更改默认内核并避免任何手动配置,只需在conda命令末尾添加jupyter

conda create --name ENVNAME python=PYTHONVERSION jupyter

当您使用ipython或jupyter笔记本时,将使用正确的内核。


这里还有一个简单的方法

1
2
3
workon my-virtualenv-name  # activate your virtualenv, if you haven't already
pip install tornado==4.5.3
pip install ipykernel==4.8.2

现在,您应该能够在ipython笔记本菜单中看到内核:kernel->change kernel,并能够切换到它(您可能需要在页面出现在列表中之前刷新页面)。从那时起,ipython将记住该笔记本使用哪个内核。

这对我很有用。来源


在我的例子中,Jupyter无法"选择"虚拟环境的python。所以我不得不编辑~/.local/share/jupyter/kernels/{my_env_name}/kernel.json并向解释器添加路径

argv键中。