0

I use one (project-independent, installed with pipx) jupyter notebook (or lab) installation, and then separate virtual environments for each project (using pipenv). If I open a notebook in one of the projects, it will run using the system python by default. If I want it to run using the virtual environment's python, I have to install ipykernel into the venv and the let the global jupyter installation know that it exists by running inside the venv python -m ipykernel install --user --name project-pipenv. I can then select the correct kernel from inside jupyter.

Now I have 20+ projects, so my list of kernels is rather long. Is it possible to automatically use the correct kernel?

1 Answer 1

0

Rather than using one kernel definition by project, we can make the kernel definition pipenv-aware. Create (or edit/copy an existing kernel definition at ~/.local/share/jupyter/kernels/pipenv/kernel.json (linux) ~/Library/Jupyter/kernels/pipenv/kernel.json (Mac) or %APPDATA%\jupyter\kernels\pipenv\kernel.json (Windows):

{
 "argv": [
  "pipenv",
  "run",
  "python",
  "-m",
  "ipykernel_launcher",
  "-f",
  "{connection_file}"
 ],
 "display_name": "pipenv",
 "language": "python",
 "metadata": {
  "debugger": true
 }
}

Now any notebook that sits in a pipenv project with ipykernel as a dependency will automatically use that kernel. This should be possible to adapt to poetry or others.

Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.