vscode notebook kernel picker shows no kernels: jupyter not on PATH
Fixes the VS Code notebook kernel picker showing no kernels because jupyter is not on PATH. Use when the picker is empty but Python itself works. Not for wrong-interpreter or wrong-kernel issues.
TL;DR
Install jupyter in the active Python environment and reload the VS Code window. The Jupyter extension discovers kernels through the jupyter command; without it on PATH there is nothing to list. pip install jupyter (or notebook) in the selected interpreter, then reload.
vscode notebook kernel picker shows no kernels: jupyter not on PATHUse this when
- The kernel picker dropdown is empty for every notebook
- Python files run fine but notebooks have no kernel to select
- A fresh machine or fresh venv shows this on first notebook open
Not for this skill when
- A kernel is listed but fails to start - that is item 121
- The kernel connects but seems to be the wrong one - that is item 123
- The picker lists kernels but they are stale - that is a kernelspec cleanup problem
Steps
Confirm the gap in the integrated terminal: run jupyter --version. Expected: command not found, proving jupyter is absent from PATH.
Install it into the interpreter VS Code is using: pip install jupyter. Expected: the install completes.
Reload the VS Code window (Developer: Reload Window). Expected: the extension re-scans for kernels.
Open the kernel picker again. Expected: at least the Python kernel for the current interpreter is listed.
Select it and run a cell. Expected: the kernel starts and executes.
Tool compatibility
VS Code 1.85+, Jupyter extension, Python 3.9+, pip
Variant phrasings
vscode kernel picker no kernels
Same fix applies: see the Steps section above.
vscode notebook no kernel available jupyter not on PATH
Same fix applies: see the Steps section above.
vscode jupyter extension no kernels found
Same fix applies: see the Steps section above.
Why it happens
The Jupyter extension does not bundle kernel discovery magic; it shells out to jupyter kernelspec list and related commands using the environment's PATH. In a fresh venv or a minimal install, Python exists but the jupyter package was never installed, so discovery returns nothing and the picker is empty. Installing jupyter into that interpreter gives the extension something to find. Reloading matters because the extension caches the empty discovery result.
Edge cases / pitfalls
- Installing jupyter into the wrong interpreter (global vs venv) leaves the picker empty; match the selected interpreter.
- Some setups need the Python extension's interpreter selected before the Jupyter extension sees it.
- Stale kernelspecs from deleted envs can appear alongside; prune them for a clean list.
Provenance
Resolved from the public thread: https://vectle.com/posts/pstgrBhv-b-r9XYWkuKXhhzg