Conda environments not showing up in Jupyter Notebook
我安装了Anaconda(使用Python 2.7),并在名为
问题是Jupyter Notebook无法识别我刚刚创建的新环境。无论我从GUI Navigator或
奇怪的是,当我打开Jupyter首页上的
我看了这个问题:
将Conda环境与Jupyter Notebook联系起来
但是我的电脑上没有
我真的很困惑。 Conda环境是否应该自动成为内核? (我按照https://ipython.readthedocs.io/en/stable/install/kernel_install.html手动设置内核,但被告知找不到
我不认为其他答案正在发挥作用,因为conda停止自动将环境设置为jupyter内核。您需要以下列方式为每个环境手动添加内核:
1 2 | source activate myenv python -m ipykernel install --user --name myenv --display-name"Python (myenv)" |
如此处所述:http://ipython.readthedocs.io/en/stable/install/kernel_install.html#kernels-for-different-environments
另见本期。
附录:
您应该能够使用
令人讨厌的是,在
1 | (tensorflow) $ conda install jupyter |
并且
如果您的环境未显示,则可能未在安装Jupyter的环境中安装
nb_conda_kernels should be installed in the environment from which
you run Jupyter Notebook or JupyterLab. This might be your base conda
environment, but it need not be. For instance, if the environment
notebook_env contains the notebook package, then you would run
1 conda install -n notebook_env nb_conda_kernelsAny other environments you wish to access in your notebooks must have
an appropriate kernel package installed. For instance, to access a
Python environment, it must have the ipykernel package; e.g.
1 conda install -n python_env ipykernelTo utilize an R environment, it must have the r-irkernel package; e.g.
1 conda install -n r_env r-irkernelFor other languages, their corresponding kernels must be installed.
请注意,在最初发布此内容时,可能会导致
如果其他解决方案无法让Jupyter识别其他conda环境,则始终可以在特定环境中安装并运行
1 2 3 4 5 | $ conda create -n py36_test -y python=3.6 jupyter $ source activate py36_test (py36_test) $ which jupyter /home/schowell/anaconda3/envs/py36_test/bin/jupyter (py36_test) $ jupyter notebook |
请注意,我在这个笔记本中运行Python 3.6.1:
请注意,如果您在许多环境中执行此操作,则可能不希望将Jupyter安装到每个环境中所添加的存储空间(取决于您的系统)。
我必须运行前3个答案中提到的所有命令才能使其正常工作:
1 2 3 4 | conda install jupyter conda install nb_conda conda install ipykernel python -m ipykernel install --user --name mykernel |
只需在新环境中运行
摘要(tldr)
如果您希望'python3'内核始终从启动它的环境运行Python安装,请删除User'python3'内核,该内核优先于当前环境所使用的内容:
1 | jupyter kernelspec remove python3 |
完整解决方案
我将针对以下案例发布一个替代且更简单的解决方案:
- 您已经创建了一个conda环境
- 这个环境安装了jupyter(也安装了ipykernel)
-
当您运行命令
jupyter notebook 并通过单击"新建"下拉菜单中的"python3"创建新笔记本时,该笔记本将从基本环境执行python,而不是从当前环境执行。 - 你希望它能在任何环境中使用'python3'启动一个新的笔记本从该环境执行Python版本而不是基础
我将使用名称'test_env'作为解决方案其余部分的环境。另请注意,'python3'是内核的名称。
目前投票最高的答案确实有效,但还有另一种选择。它说要做以下事情:
1 | python -m ipykernel install --user --name test_env --display-name"Python (test_env)" |
这将为您提供使用test_env环境的选项,无论您从哪个环境启动
可能发生的是存在一个用户python3内核。运行命令
1 | python3 /Users/Ted/Library/Jupyter/kernels/python3 |
Jupyter在这里做的是搜索寻找内核的三种不同路径。它从User,Env到System。有关其搜索每个操作系统的路径的详细信息,请参阅此文档。
上面的两个内核都在用户路径中,这意味着无论您从哪个环境启动jupyter笔记本,它们都可用。这也意味着如果在环境级别有另一个'python3'内核,那么你永远无法访问它。
对我来说,更有意义的是从你启动笔记本的环境中选择'python3'内核应该从该环境中执行Python。
您可以通过查看操作系统的Env搜索路径来查看是否有另一个"python3"环境(请参阅上面文档的链接)。对我(在我的Mac上),我发出以下命令:
1 | ls /Users/Ted/anaconda3/envs/test_env/share/jupyter/kernels |
我确实在那里列出了'python3'内核。
感谢这个GitHub问题评论(查看第一个响应),您可以使用以下命令删除User'python3'环境:
1 | jupyter kernelspec remove python3 |
现在,当您运行
1 | python3 /Users/Ted/anaconda3/envs/test_env/share/jupyter/kernels/python3 |
请注意,此路径位于test_env目录中。如果您创建一个新环境,安装jupyter,激活它并列出内核,您将获得位于其环境路径中的另一个'python3'内核。
用户'python3'内核优先于任何Env'python3'内核。通过删除它,活动环境'python3'内核被暴露,并且每次都可以选择。这消除了手动创建内核的需要。在软件开发方面,它也更有意义,人们希望将自己隔离到单一环境中。运行与主机环境不同的内核似乎并不自然。
似乎默认情况下并没有为每个人安装此用户'python3',因此不是每个人都面临这个问题。
我们在这个问题上遇到了很多困难,这对我们有用。如果使用conda-forge通道,确保使用
所以安装Miniconda,然后执行:
1 2 3 4 5 | conda config --add channels conda-forge --force conda update --all -y conda install nb_conda_kernels -y conda env create -f custom_env.yml -q --force jupyter notebook |
并且您的自定义环境将在Jupyter中显示为可用内核,只要在
1 2 3 4 5 6 7 8 | name: bqplot channels: - conda-forge - defaults dependencies: - python>=3.6 - bqplot - ipykernel |
只是为了证明它适用于一堆自定义环境,这里是Windows的屏幕抓取:
1 | $ conda install nb_conda_kernels |
(在您运行jupyter笔记本的conda环境中)将自动使所有conda环境可用。要访问其他环境,必须安装相应的内核。这是参考。
我遇到了同样的问题,我的新conda环境
我的解决方案,以及我了解Jupyter笔记本如何识别conda-envs和内核:
使用conda将jupyter和ipython安装到
1 | conda install -n myenv ipython jupyter |
之后,在任何列出
1 2 | Python [conda env:old] Python [conda env:myenv] |
激活环境后运行笔记本:
1 2 | source activate myenv jupyter notebook |
隐藏我所有的其他环境内核,只显示我的语言内核:
1 2 3 | python 2 python 3 R |
虽然@ coolscitist的答案对我有用,但也有一种方法可以使用完整的jupyter包+ deps来破坏你的内核环境。
它在ipython文档中描述,并且(我怀疑)只有在非基础环境中运行笔记本服务器时才需要。
1 2 3 | conda activate name_of_your_kernel_env conda install ipykernel python -m ipykernel install --prefix=/home/your_username/.conda/envs/name_of_your_jupyter_server_env --name 'name_of_your_kernel_env' |
您可以检查它是否有效
1 2 | conda activate name_of_your_jupyter_server_env jupyter kernelspec list |
这真令人沮丧,我的问题是在新构建的conda python36环境中,jupyter拒绝加载"seaborn" - 即使seaborn安装在该环境中。它似乎能够从同一环境中导入大量其他文件 - 例如numpy和pandas但不是seaborn。我在这里和其他线程上尝试了许多修复但没有成功。直到我意识到Jupyter没有从该环境中运行内核python,而是将系统python作为内核运行。尽管在环境中已经存在一个像样的内核和kernel.json。只有在阅读了ipython文档的这一部分之后:
https://ipython.readthedocs.io/en/latest/install/kernel_install.html#kernels-for-different-environments
并使用这些命令:
1 2 | source activate other-env python -m ipykernel install --user --name other-env --display-name"Python (other-env)" |
我能够很好地完成所有事情。 (我实际上并没有使用-user变量)。
我还没想到的一件事是如何将默认python设置为"Python(other-env)"。目前,从主屏幕打开的现有.ipynb文件将使用系统python。我必须使用内核菜单"更改内核"来选择环境python。
这在Windows 10和最新的解决方案中适用于我:
1)进入conda环境(激活your_env_name)
2)conda install -n your_env_name ipykernel
3)python -m ipykernel install --user --name build_central --display-name"your_env_name"
(注意:在步骤3中包括"your_env_name"周围的引号)
Installation
This package is designed to be managed solely using conda. It should be installed in the environment from which you run Jupyter Notebook or JupyterLab. This might be your
base conda environment, but it need not be. For instance, if the environmentnotebook_env contains the notebook package, then you would run
conda install -n notebook_env nb_conda_kernels Any other environments you wish to access in your notebooks must have an appropriate kernel package installed. For instance, to access a Python environment, it must have the
ipykernel package; e.g.
conda install -n python_env ipykernel To utilize an R environment, it
must have the r-irkernel package; e.g.
conda install -n r_env r-irkernel For other languages, their corresponding kernels must be installed.
然后你需要做的就是启动jupyter笔记本服务器:
1 2 3 | conda activate notebook_env # only needed if you are not using the base environment for the server # conda install jupyter # in case you have not installed it already jupyter |
尽管有太多的答案和@ merv努力改进它们,但仍然很难找到一个好的答案。我做了这个CW,所以请把它投到顶部或改进它!
按照iPython文档中的说明将不同的conda环境添加到Jupyter Notebook中可供选择的内核列表中。总之,在安装
就我而言,使用Windows 10和conda 4.6.11,通过运行命令
1 2 3 | conda install nb_conda conda install -c conda-forge nb_conda_kernels |
在我使用
解决方案显然是从Anaconda Navigator打开Jupyter,进入环境环境:打开Anaconda Navigator,在环境中选择环境,按下所选环境中的"播放"按钮,然后选择"用Jupyter Notebook打开"。
Anaconda Navigator中的环境可以从选定的环境中运行Jupyter