Kernel 'Python 3' is referencing a kernel provisioner ('local-provisioner') that is not available. Ensure the appropriate package has been installed and retry

Hi! Have troubles running python3 kernel in the jupyter notebook. I’ve noticed warning in the log:
WARNING | Kernel 'Python 3' is referencing a kernel provisioner ('local-provisioner') that is not available. Ensure the appropriate package has been installed and retry.

I’ve tried to install kernel through ipykernel install and through jupyter kernelspec install-self, both methods returned same result. Also I’ve tried to install through ipython3 kernel install --name "py3" --user this got me the same result too. So I guess it expects me to install a local-provisioner from somewhere.

What package I should install to get it working?

orazaev@baboon03:~$ jupyter troubleshoot
$PATH:
/home/orazaev/.local/bin
/usr/local/sbin
/usr/local/bin
/usr/sbin
/usr/bin
/sbin
/bin
/usr/games
/usr/local/games
/mnt/c/Program Files/WindowsApps/CanonicalGroupLimited.UbuntuonWindows_2004.2021.222.0_x64__79rhkp1fndgsc
/mnt/c/Python27/
/mnt/c/Python27/Scripts
/mnt/c/WINDOWS/system32
/mnt/c/WINDOWS
/mnt/c/WINDOWS/System32/Wbem
/mnt/c/WINDOWS/System32/WindowsPowerShell/v1.0/
/mnt/c/WINDOWS/System32/OpenSSH/
/mnt/c/Program Files/dotnet/
/mnt/c/Program Files/Microsoft SQL Server/Client SDK/ODBC/170/Tools/Binn/
/mnt/c/Program Files/Git/cmd
/mnt/c/Program Files/Git/mingw64/bin
/mnt/c/Program Files/Git/usr/bin
/mnt/c/ProgramData/chocolatey/bin
/mnt/c/Program Files (x86)/Windows Kits/10/Windows Performance Toolkit/
/mnt/c/Program Files/Windows Kits/10/Microsoft Application Virtualization/Sequencer/
/mnt/c/Program Files/Microsoft SQL Server/130/Tools/Binn/
/mnt/c/Program Files/CMake/bin
/mnt/c/Program Files/doxygen/bin
/mnt/c/Program Files/Docker/Docker/resources/bin
/mnt/c/ProgramData/DockerDesktop/version-bin
/mnt/c/Program Files/nodejs/
/mnt/c/Program Files (x86)/dotnet/
/mnt/c/Program Files/PowerShell/7/
/mnt/c/Users/amorazae.REDMOND/AppData/Local/Programs/Python/Python37-32
/mnt/c/Users/amorazae.REDMOND/AppData/Local/Microsoft/WindowsApps
/mnt/c/Users/amorazae.REDMOND/AppData/Local/Programs/Microsoft VS Code/bin
/mnt/c/Users/amorazae.REDMOND/AppData/Local/Programs/Fiddler
/mnt/c/Users/amorazae.REDMOND/AppData/Local/Microsoft/WindowsApps
/mnt/c/Users/amorazae.REDMOND/.dotnet/tools
/mnt/c/Users/amorazae.REDMOND/AppData/Roaming/npm
/snap/bin

sys.path:
/home/orazaev/.local/bin
/usr/lib/python36.zip
/usr/lib/python3.6
/usr/lib/python3.6/lib-dynload
/home/orazaev/.local/lib/python3.6/site-packages
/usr/local/lib/python3.6/dist-packages
/usr/lib/python3/dist-packages

sys.executable:
/usr/bin/python3

sys.version:
3.6.8 (default, Oct 7 2019, 12:59:55)
[GCC 8.3.0]

platform.platform():
Linux-4.4.0-19041-Microsoft-x86_64-with-Ubuntu-18.04-bionic

which -a jupyter:
/home/orazaev/.local/bin/jupyter

pip list:
Package Version
---------------------- -------------------
alpha-vantage 2.1.3
argon2-cffi 20.1.0
asn1crypto 0.24.0
async-generator 1.10
attrs 21.2.0
Automat 0.6.0
backcall 0.2.0
bleach 4.0.0
blinker 1.4
certifi 2021.5.30
cffi 1.14.6
chardet 3.0.4
charset-normalizer 2.0.4
click 6.7
cloud-init 18.5
colorama 0.3.7
command-not-found 0.3
configobj 5.0.6
constantly 15.1.0
convertdate 2.2.0
cryptography 2.1.4
cycler 0.10.0
Cython 0.29.14
decorator 5.0.9
defusedxml 0.7.1
distro-info 0.18ubuntu0.18.04.1
entrypoints 0.3
fbprophet 0.5
holidays 0.9.12
httplib2 0.9.2
hyperlink 17.3.1
idna 3.2
importlib-metadata 4.6.4
incremental 16.10.1
ipykernel 5.5.5
ipython 7.16.1
ipython-genutils 0.2.0
ipywidgets 7.6.3
jedi 0.18.0
Jinja2 3.0.1
joblib 0.14.1
jsonpatch 1.16
jsonpointer 1.10
jsonschema 3.2.0
jupyter 1.0.0
jupyter-client 7.0.0
jupyter-console 6.4.0
jupyter-core 4.7.1
jupyter-kernel-gateway 2.5.0
jupyterlab-pygments 0.1.2
jupyterlab-widgets 1.0.0
keyring 10.6.0
keyrings.alt 3.0
kiwisolver 1.3.1
language-selector 0.1
lunardate 0.2.0
MarkupSafe 2.0.1
matplotlib 3.3.4
mistune 0.8.4
more-itertools 8.1.0
nbclient 0.5.4
nbconvert 6.0.7
nbformat 5.1.3
nest-asyncio 1.5.1
netifaces 0.10.4
notebook 6.4.3
numpy 1.19.5
oauthlib 2.0.6
packaging 21.0
PAM 0.4.2
pandas 1.1.5
pandocfilters 1.4.3
parso 0.8.2
pexpect 4.8.0
pickleshare 0.7.5
pika 1.1.0
Pillow 8.3.1
pip 21.2.4
plotly 4.4.1
prometheus-client 0.11.0
prompt-toolkit 3.0.19
ptyprocess 0.7.0
pyasn1 0.4.2
pyasn1-modules 0.2.1
pycparser 2.20
pycrypto 2.6.1
Pygments 2.10.0
PyGObject 3.26.1
PyJWT 1.5.3
PyMeeus 0.3.6
pyOpenSSL 17.5.0
pyparsing 2.4.7
pyrsistent 0.18.0
pyserial 3.4
pystan 2.19.1.1
python-apt 1.6.4
python-dateutil 2.8.2
python-debian 0.1.32
pytz 2021.1
pyxdg 0.25
PyYAML 3.12
pyzmq 22.2.1
qtconsole 5.1.1
QtPy 1.10.0
requests 2.26.0
requests-unixsocket 0.1.5
retrying 1.3.3
scikit-learn 0.22.1
scipy 1.5.4
seaborn 0.11.2
SecretStorage 2.3.1
Send2Trash 1.8.0
service-identity 16.0.0
setuptools 57.4.0
setuptools-git 1.2
six 1.16.0
sklearn 0.0
ssh-import-id 5.7
systemd-python 234
terminado 0.11.1
testpath 0.5.0
tornado 6.1
tqdm 4.41.1
traitlets 4.3.3
Twisted 17.9.0
typing-extensions 3.10.0.0
ufw 0.36
unattended-upgrades 0.1
urllib3 1.26.6
wcwidth 0.2.5
webencodings 0.5.1
wheel 0.30.0
widgetsnbextension 3.5.1
zipp 3.5.0
zope.interface 4.3.2

This is a github thread related to this: Test jupyter_client master by davidbrochart · Pull Request #493 · jupyter/qtconsole · GitHub

TLDR, solution is:
pip3 install --force-reinstall jupyter_client

Hi @AOrazaev, we should definitely change the error message specifically for local-provisioner since that provisioner is directly baked into jupyter_client (7.0+) as its confusing relative to that provisioner. As noted in the linked thread, it should be present so there’s some way that the jupyter_client code is made available w/o the requisite entrypoint registration - which is how local-provisioner is deemed available.

Do you or others happen to know by which “installation or packaging” mechanism entrypoints get registered? There’s obviously some path in which the package modules are made available, yet package-specific entrypoints are not.

Thank you.

conda install --force-reinstall jupyter_client also works if you are using conda.

1 Like

this does not work for me, I keep getting the same error

I’m also getting this same error after reinstalling jupyter_client.
Any other suggestions?
Thanks,
Tim

Same here! Reinstalling the jupyter_client did nothing

I think I might know what’s happening. Since I’m unfamiliar Python packaging, my terminology might not be correct - so please bear with me.

The entrypoint entries are stored in the package distribution within a file named entry_points.txt. Distributions appear to reside in {sys.prefix}/lib/pythonX.Y/site-packages. The distribution for a given package is located in a sibling directory to (in this case) jupyter_client named jupyter_client-7.0.2.dist-info and you should see an entry_points.txt file in that directory with the following contents:

[console_scripts]
jupyter-kernel = jupyter_client.kernelapp:main
jupyter-kernelspec = jupyter_client.kernelspecapp:KernelSpecApp.launch_instance
jupyter-run = jupyter_client.runapp:RunApp.launch_instance

[jupyter_client.kernel_provisioners]
local-provisioner = jupyter_client.provisioning:LocalProvisioner

Under some circumstances, which is the mystery, the distribution from the previous installation of jupyter_client is not removed when jupyter_client is upgraded. In those circumstances, there will be two distribution directories - one pertaining to the previous release, in this case, jupyter_client-6.1.12.dist-info and the other relative to the current release. When this occurs, you will have jupyter_client 7.0 installed, with entrypoints, yet the local-provisioner is not found because the entry_points.txt file that is picked up is from the previous release.

As a result, I think, when this situation is encountered, an uninstall/reinstall sequence should take place. However, I’m not sure this will remove the previous distribution directory. So, to ultimately fix this, one would need to navigate to the {sys.prefix}/lib/pythonX.Y/site-packaes directory and ensure there’s only one dist-info directory relative to jupyter_client and that dist-info directory name contains the matching version information contained within the sibling jupyter_client/_version.py file.

Could someone please take a look and see if there are multiple dist-info directories relative to jupyter_client?

1 Like

I can reproduce this by manually introducing multiple distributions, the first of which doesn’t include local-provisioner.

I have posted this pull request to rectify this particular scenario.

I apologize for the inconvenience.

UPDATE: jupyter_client 7.0.3 contains the necessary logic to handle this situation: jupyter-client · PyPI

2 Likes

That really helps! Thanks a lot!
However, an uninstall/reinstall sequence is not that helpful.
And I just

  • remove all jupyter files under {sys.prefix}/lib/pythonX.Y/site-packaes} using rm -rf jupyter*
  • reinstall jupyter using conda install jupyter notebook

Then everything works perfectly.

1 Like

I get

[ListKernelSpecs] WARNING | Kernel Provisioning: The 'local-provisioner' is not found.  This is likely due to the presence of multiple jupyter_client distributions and a previous distribution is being used as the source for entrypoints - which does not include 'local-provisioner'.  That distribution should be removed such that only the version-appropriate distribution remains (version >= 7).  Until then, a 'local-provisioner' entrypoint will be automatically constructed and used.
The candidate distribution locations are: ['/usr/local/lib/python3.9/site-packages/jupyter_client-7.3.2.dist-info']

I’ve tried everything above, as well as

pip freeze | xargs pip uninstall -y
pip install -U -r requirements.txt
jupyter lab clean --all; jupyter lab build

but nothing gets rid of the error.

I hit the the same issue on an M1 Mac with lingering older versions of Python and an Xcode version that was in need of an update.

I resolved it on OSX 12.4 Monterey M1 Mac as follows:

rm -rf /Library/Developer/CommandLineTools

xcode-select --install

if you installed tensorflow following Apple’s instructions from here:

python -m pip uninstall tensorflow-macos
python -m pip uninstall tensorflow-metal

#Assuming you’'ve installed miniconda as suggested above

python -m pip install tensorflow-macos

install the metal bindings for TF

python -m pip install tensorflow-metal

Finally reinstall the Jupiter client
pip install --force-reinstall jupyter_client

`