Link Conda environment with Jupyter Notebook
Question:
I’m trying to set a good environnement for doing some scientific stuff with python. To do so, I installed Jupyter & miniconda.
Then I want to be able to have different environnement and use them with Jupyter notebooks. So I created two custom envs with conda : py27 and py35.
> conda env list
# conda environments:
#
py27 /Users/***/miniconda3/envs/py27
py35 /Users/***/miniconda3/envs/py35
root * /Users/***/miniconda3
Then on my notebook I have two kernels python 2
and python 3
.
Inside a notebook, I get the following with the python3 kernel :
> import sys
> print(sys.executable)
/Users/***/miniconda3/envs/py35/bin/python
And this with the python2 kernel :
> import sys
> print(sys.executable)
/usr/local/opt/python/bin/python2.7
- How can I set the
sys.executable
to miniconda env for python2 ?
- How can I bind a conda env with a notebook kernel ?
- Is doing
source activate py35
has a link with jupyter notebook
?
I think I really missed something.
Thank you everyone.
— edit
I have multiple jupyter bin :
> where jupyter
/usr/local/bin/jupyter
/usr/local/bin/jupyter
/Users/ThomasDehaeze/miniconda3/bin/jupyter
I have only one kernel here /usr/local/share/jupyter/kernels/python2
.
But inside Jupyter, I have two kernels, python2
and python3
. Where can I find the other one ?
I modified kernel.json
from /usr/local/share/jupyter/kernels/python2
:
{
"display_name": "Python 2",
"language": "python",
"argv": [
"/Users/***/miniconda3/envs/py27/bin/python2.7",
"-m",
"ipykernel",
"-f",
"{connection_file}"
]
}
And then :
import sys
print(sys.executable)
/usr/local/opt/python/bin/python2.7
So nothing has changed
Answers:
I found the solution. The setup for the kernels where located here ~/Library/Jupyter/kernels/
.
Then I modified the kernel.json
file and set the right path to python.
Now it’s working.
For Anaconda I suggest you a much easier and proper solution;
just give a look at the nb_conda_kernels package.
It allows you to "manage your conda environment-based kernels inside the Jupyter Notebook".
Is should be included since Anaconda version 4.1.0, otherwise simply use
conda install nb_conda
Now you should be able to manage all direcly from the Notebook interface.
Note that only environments that have a Jupyter kernel installed (in the case of Python, the ipykernel
package). Quote from the nb_conda_kernels
GitHub page:
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
Not sure what else did help, but for me crucial was to install nb_conda_kernels
in root conda environment. Attempting to install it in specific conda environment did not end up in having Jupyter Notebook be able to use other conda environment other than default one.
conda install -n root nb_conda_kernels
jupyter notebook
Assuming your conda-env is named cenv
, it is as simple as :
$ conda activate cenv
(cenv)$ conda install ipykernel
(cenv)$ ipython kernel install --user --name=<any_name_for_kernel>
(cenv($ conda deactivate
If you restart your jupyter notebook/lab you will be able to see the new kernel available.
PS: If you are using virtualenv etc. the above steps hold good.
This worked for me:
source activate {environment_name}
python -m ipykernel install --user --name={environment_name};
Incase ipykernel is not installed, use this command:
conda install -c anaconda ipykernel
What has worked for me is: creating virtual environment, install ipykernel, register the virtual environmentin the jupyter kernel and load jupyter notebook:
$ conda create -n testEnv python=3.6
$ conda activate testEnv
(testEnv)$ conda install ipykernel
(testEnv)$ ipython kernel install --user --name=testEnv
(testEnv)$ jupyter notebook
After this, in the jupyter notebook you should be able to find created environment among the list of other kernels
If you use a jupyter notebook from a docker image (e. g. jupyter/scipy-notebook), you can use mounted conda environments as a kernel.
- Mount conda env with:
docker run -d -v "/opt/anaconda/envs:/opt/conda/envs" -p 10000:8888 jupyter/scipy-notebook
- Install nb_conda_kernels in the base env from the jupyter terminal:
(base) jovyan@NUM:~$ conda install nb_conda_kernels
- Activate env from the mounted volume (must be created before) that should be used:
(base) jovyan@NUM:~$ conda activate useEnv
- Install ipykernel into useEnv:
(useEnv) jovyan@NUM:~$ conda install -c anaconda ipykernel
- Install the kernel
(useEnv) jovyan@NUM:~$ python -m ipykernel install --user --name=useEnv
Than you can select the newly installed kernel useEnv
in a jupyter notebook.
NOTE For me, it was not that clear where the packages nb_conda_kernels
and ipykernel
in the accepted answer from 5agado has to be installed and if and how it works from within the dockered jupyter notebook terminal.
I’m trying to set a good environnement for doing some scientific stuff with python. To do so, I installed Jupyter & miniconda.
Then I want to be able to have different environnement and use them with Jupyter notebooks. So I created two custom envs with conda : py27 and py35.
> conda env list
# conda environments:
#
py27 /Users/***/miniconda3/envs/py27
py35 /Users/***/miniconda3/envs/py35
root * /Users/***/miniconda3
Then on my notebook I have two kernels python 2
and python 3
.
Inside a notebook, I get the following with the python3 kernel :
> import sys
> print(sys.executable)
/Users/***/miniconda3/envs/py35/bin/python
And this with the python2 kernel :
> import sys
> print(sys.executable)
/usr/local/opt/python/bin/python2.7
- How can I set the
sys.executable
to miniconda env for python2 ? - How can I bind a conda env with a notebook kernel ?
- Is doing
source activate py35
has a link withjupyter notebook
?
I think I really missed something.
Thank you everyone.
— edit
I have multiple jupyter bin :
> where jupyter
/usr/local/bin/jupyter
/usr/local/bin/jupyter
/Users/ThomasDehaeze/miniconda3/bin/jupyter
I have only one kernel here /usr/local/share/jupyter/kernels/python2
.
But inside Jupyter, I have two kernels, python2
and python3
. Where can I find the other one ?
I modified kernel.json
from /usr/local/share/jupyter/kernels/python2
:
{
"display_name": "Python 2",
"language": "python",
"argv": [
"/Users/***/miniconda3/envs/py27/bin/python2.7",
"-m",
"ipykernel",
"-f",
"{connection_file}"
]
}
And then :
import sys
print(sys.executable)
/usr/local/opt/python/bin/python2.7
So nothing has changed
I found the solution. The setup for the kernels where located here ~/Library/Jupyter/kernels/
.
Then I modified the kernel.json
file and set the right path to python.
Now it’s working.
For Anaconda I suggest you a much easier and proper solution;
just give a look at the nb_conda_kernels package.
It allows you to "manage your conda environment-based kernels inside the Jupyter Notebook".
Is should be included since Anaconda version 4.1.0, otherwise simply use
conda install nb_conda
Now you should be able to manage all direcly from the Notebook interface.
Note that only environments that have a Jupyter kernel installed (in the case of Python, the ipykernel
package). Quote from the nb_conda_kernels
GitHub page:
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
Not sure what else did help, but for me crucial was to install nb_conda_kernels
in root conda environment. Attempting to install it in specific conda environment did not end up in having Jupyter Notebook be able to use other conda environment other than default one.
conda install -n root nb_conda_kernels
jupyter notebook
Assuming your conda-env is named cenv
, it is as simple as :
$ conda activate cenv
(cenv)$ conda install ipykernel
(cenv)$ ipython kernel install --user --name=<any_name_for_kernel>
(cenv($ conda deactivate
If you restart your jupyter notebook/lab you will be able to see the new kernel available.
PS: If you are using virtualenv etc. the above steps hold good.
This worked for me:
source activate {environment_name}
python -m ipykernel install --user --name={environment_name};
Incase ipykernel is not installed, use this command:
conda install -c anaconda ipykernel
What has worked for me is: creating virtual environment, install ipykernel, register the virtual environmentin the jupyter kernel and load jupyter notebook:
$ conda create -n testEnv python=3.6
$ conda activate testEnv
(testEnv)$ conda install ipykernel
(testEnv)$ ipython kernel install --user --name=testEnv
(testEnv)$ jupyter notebook
After this, in the jupyter notebook you should be able to find created environment among the list of other kernels
If you use a jupyter notebook from a docker image (e. g. jupyter/scipy-notebook), you can use mounted conda environments as a kernel.
- Mount conda env with:
docker run -d -v "/opt/anaconda/envs:/opt/conda/envs" -p 10000:8888 jupyter/scipy-notebook
- Install nb_conda_kernels in the base env from the jupyter terminal:
(base) jovyan@NUM:~$ conda install nb_conda_kernels
- Activate env from the mounted volume (must be created before) that should be used:
(base) jovyan@NUM:~$ conda activate useEnv
- Install ipykernel into useEnv:
(useEnv) jovyan@NUM:~$ conda install -c anaconda ipykernel
- Install the kernel
(useEnv) jovyan@NUM:~$ python -m ipykernel install --user --name=useEnv
Than you can select the newly installed kernel useEnv
in a jupyter notebook.
NOTE For me, it was not that clear where the packages nb_conda_kernels
and ipykernel
in the accepted answer from 5agado has to be installed and if and how it works from within the dockered jupyter notebook terminal.