Python 在不同环境下运行内核的jupyter笔记本

Python 在不同环境下运行内核的jupyter笔记本,python,packages,jupyter,conda,virtual-environment,Python,Packages,Jupyter,Conda,Virtual Environment,我把自己弄得一团糟。救命啊 我使用conda管理环境。直到最近,我只有一个python2 jupyter笔记本内核,但我决定把自己拖进21世纪,安装了一个python3内核;我忘了我是怎么做的 我的主python(anaconda)默认为2.7 所以我在这里,愉快地尝试从我闪亮的新python3内核中使用美丽的汤,而我似乎无法在任何环境中找到包。Viz(全部来自笔记本): 好的,我会用shell magic安装它。对吗?对吧? ! pip install bs4 --> Collecti

我把自己弄得一团糟。救命啊

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

我的主python(anaconda)默认为2.7

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

好的,我会用shell magic安装它。对吗?对吧?

! 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环境中吗?那不行

! 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 env

! 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  
关于

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

-> ImportError: No module named 'bs4'
更多关于

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

-> ImportError: No module named 'bs4'
啊!!!为了解决这个问题(并重新运行一些工作),我是否必须杀死内核?杀掉内核会起作用吗?如何让我的jupyter内核知道它应该在什么环境下运行


谢谢

这是ipython/Jupyter的一个棘手部分。可用的内核集与启动jupyter Notebook时的virtualenv无关。诀窍是在您想要为jupyter唯一标识自身的环境中设置ipykernel包。从

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

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


另请参见

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

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

conda create--name ENVNAME python=PYTHONVERSION jupyter


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

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


argv
键中。

这里还有一个简单的方法

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将记住该笔记本使用哪个内核

这对我有用

然后转到上面的目录 打开kernel.json

{
 "argv": [
  "/home/user/anaconda3/envs/myenv/bin/python", # path to your virtual environment python
  "-m",
  "ipykernel_launcher",
  "-f",
  "{connection_file}"
 ],
 "display_name": "myenv",
 "language": "python"
}

非常感谢。我还发现我还没有将jupyter安装到新环境中,但它仍然使用“juptyer notebook”命令启动。所以,一开始我没有意识到。非常感谢你的回答!这是可行的,但我不明白Jupyter是如何找到通往环境的路径的。在kernel.json文件中没有提到它。headdesk可能与+1重复-这正是我在过去两天使用Tensorboard和Jupyter以及。。。哦,人性!如果我能投5次以上的票,我会的。我有visualstudio代码,以Windows子系统作为控制台,我安装了virtualenv,然后安装了jupyter,然后我无法使用virtualenv中的库。这就解决了!!workon不起作用-不起作用您知道我尝试过搜索但不起作用的任何解决方案吗?我正在使用vs代码
{
 "argv": [
  "/home/user/anaconda3/envs/myenv/bin/python", # path to your virtual environment python
  "-m",
  "ipykernel_launcher",
  "-f",
  "{connection_file}"
 ],
 "display_name": "myenv",
 "language": "python"
}