amrakm
amrakm

Reputation: 83

Jupyter kernel uses different Python version than Conda environment

I am not able to link Jupyter kernels to their parent Conda environments. After creating a new kernel linked to Conda environment, I'm getting a different version of Python and its dependencies inside Jupyter lab.

Here are the steps I followed:

Created a conda environment using:

conda create -n nlp python=3.6

conda activate nlp

(nlp) ➜ ~ python --version

Python 3.6.9 :: Anaconda, Inc.

(nlp) ➜ ~ which python

/anaconda3/envs/nlp/bin/python

Inside the environment I created a Jupyter kernel with:

(nlp) ➜ ~ python -m ipykernel install --user --name=nlp

Installed kernelspec nlp in /Users//Library/Jupyter/kernels/nlp

Investigating the created json file for the kernel:

(nlp) ➜  ~ cat /Users/<username>/Library/Jupyter/kernels/nlp/kernel.json
{
 "argv": [
  "/anaconda3/envs/nlp/bin/python",
  "-m",
  "ipykernel_launcher",
  "-f",
  "{connection_file}"
 ],
 "display_name": "nlp",
 "language": "python"
}%

It seems to be pointing to the environment version of Python

But when I start Jupyter Lab and select the nlp kernel, I get a different version of Python and some dependencies are missing

!python --version

Python 3.5.6 :: Anaconda, Inc.

!which python

/anaconda3/bin/python

Upvotes: 7

Views: 4183

Answers (3)

J R
J R

Reputation: 589

Can you try this :

# in base env
conda install nb_conda_kernels
conda activate nlp
conda install ipykernel
conda install ipywidgets
# install kernelspec
python -m ipykernel install --user --name nlp --display-name "nlp env"

When you run jupyter notebook, you will see 2 nlp kernels. Use the one with "Python [conda:env:nlp]"

Upvotes: 0

nutrition
nutrition

Reputation: 1

this behavior is actually normal in Jupyter lab. If you run

import sys
print(sys.version)
!python --version

in a notebook, the print statement will give you the Python version of the conda env, while the second will give you the Python version of your base env.

The easiest workaround for this is to simply pip install jupyterlab in your conda env and then run jupyter lab in your conda env. Then, there will not be a mismatch in Python versions between the new "base" env and the conda env which will help clear up any DLL problems.

It's probably not best practice, but you do what you gotta do when working with legacy code, ig.

Upvotes: 0

Lakshmi - Intel
Lakshmi - Intel

Reputation: 601

Could you please try the following steps:

conda activate nlp
conda install ipykernel
ipython kernel install --name nlp --user 

After these steps please try changing the kernel again in jupyter lab to "nlp".

Thanks.

Upvotes: 4

Related Questions