'Python subprocess line 1420 FileNotFoundError: [WinError 2] The system cannot find the file specified. Jupyter-Matlab notebook

I want to use Jupyter-matlab notebooks. I've downloaded Anaconda navigator and followed the steps from this web: http://jmlilly.net/jupyter-matlab Unfortunately, when I try to open a matlab notebook there is a kernel error. I've been trying re-install anaconda, jupyter, matlab-kernel, change environment python version (2.7, 3.7, 3.8, 3.9) etc. but it doesn't work. Matlab version: R2021b and R2022a (tried both). Full error traceback from jupyter:

Traceback (most recent call last):

File "C:\Users\lucas\anaconda3\lib\site-packages\tornado\web.py", line 1704, in _execute
    result = await result
  File "C:\Users\lucas\anaconda3\lib\asyncio\tasks.py", line 328, in __wakeup
    future.result()
  File "C:\Users\lucas\anaconda3\lib\site-packages\tornado\gen.py", line 769, in run
    yielded = self.gen.throw(*exc_info)  # type: ignore
  File "C:\Users\lucas\anaconda3\lib\site-packages\notebook\services\sessions\handlers.py", line 74, in post
    model = yield maybe_future(
  File "C:\Users\lucas\anaconda3\lib\site-packages\tornado\gen.py", line 762, in run
    value = future.result()
  File "C:\Users\lucas\anaconda3\lib\site-packages\tornado\gen.py", line 769, in run
    yielded = self.gen.throw(*exc_info)  # type: ignore
  File "C:\Users\lucas\anaconda3\lib\site-packages\notebook\services\sessions\sessionmanager.py", line 98, in create_session
    kernel_id = yield self.start_kernel_for_session(session_id, path, name, type, kernel_name)
  File "C:\Users\lucas\anaconda3\lib\site-packages\tornado\gen.py", line 762, in run
    value = future.result()
  File "C:\Users\lucas\anaconda3\lib\site-packages\tornado\gen.py", line 769, in run
    yielded = self.gen.throw(*exc_info)  # type: ignore
  File "C:\Users\lucas\anaconda3\lib\site-packages\notebook\services\sessions\sessionmanager.py", line 110, in start_kernel_for_session
    kernel_id = yield maybe_future(
  File "C:\Users\lucas\anaconda3\lib\site-packages\tornado\gen.py", line 762, in run
    value = future.result()
  File "C:\Users\lucas\anaconda3\lib\asyncio\futures.py", line 201, in result
    raise self._exception
  File "C:\Users\lucas\anaconda3\lib\asyncio\tasks.py", line 256, in __step
    result = coro.send(None)
  File "C:\Users\lucas\anaconda3\lib\site-packages\notebook\services\kernels\kernelmanager.py", line 176, in start_kernel
    kernel_id = await maybe_future(self.pinned_superclass.start_kernel(self, **kwargs))
  File "C:\Users\lucas\anaconda3\lib\site-packages\jupyter_client\utils.py", line 26, in wrapped
    raise e
  File "C:\Users\lucas\anaconda3\lib\site-packages\jupyter_client\utils.py", line 23, in wrapped
    return loop.run_until_complete(future)
  File "C:\Users\lucas\anaconda3\lib\site-packages\nest_asyncio.py", line 89, in run_until_complete
    return f.result()
  File "C:\Users\lucas\anaconda3\lib\asyncio\futures.py", line 201, in result
    raise self._exception
  File "C:\Users\lucas\anaconda3\lib\asyncio\tasks.py", line 256, in __step
    result = coro.send(None)
  File "C:\Users\lucas\anaconda3\lib\site-packages\jupyter_client\multikernelmanager.py", line 207, in _async_start_kernel
    starter = ensure_async(km.start_kernel(**kwargs))
  File "C:\Users\lucas\anaconda3\lib\site-packages\jupyter_client\utils.py", line 26, in wrapped
    raise e
  File "C:\Users\lucas\anaconda3\lib\site-packages\jupyter_client\utils.py", line 23, in wrapped
    return loop.run_until_complete(future)
  File "C:\Users\lucas\anaconda3\lib\site-packages\nest_asyncio.py", line 89, in run_until_complete
    return f.result()
  File "C:\Users\lucas\anaconda3\lib\asyncio\futures.py", line 201, in result
    raise self._exception
  File "C:\Users\lucas\anaconda3\lib\asyncio\tasks.py", line 256, in __step
    result = coro.send(None)
  File "C:\Users\lucas\anaconda3\lib\site-packages\jupyter_client\manager.py", line 79, in wrapper
    raise e
  File "C:\Users\lucas\anaconda3\lib\site-packages\jupyter_client\manager.py", line 71, in wrapper
    out = await method(self, *args, **kwargs)
  File "C:\Users\lucas\anaconda3\lib\site-packages\jupyter_client\manager.py", line 381, in _async_start_kernel
    await ensure_async(self._launch_kernel(kernel_cmd, **kw))
  File "C:\Users\lucas\anaconda3\lib\site-packages\jupyter_client\utils.py", line 26, in wrapped
    raise e
  File "C:\Users\lucas\anaconda3\lib\site-packages\jupyter_client\utils.py", line 23, in wrapped
    return loop.run_until_complete(future)
  File "C:\Users\lucas\anaconda3\lib\site-packages\nest_asyncio.py", line 89, in run_until_complete
    return f.result()
  File "C:\Users\lucas\anaconda3\lib\asyncio\futures.py", line 201, in result
    raise self._exception
  File "C:\Users\lucas\anaconda3\lib\asyncio\tasks.py", line 256, in __step
    result = coro.send(None)
  File "C:\Users\lucas\anaconda3\lib\site-packages\jupyter_client\manager.py", line 301, in _async_launch_kernel
    connection_info = await self.provisioner.launch_kernel(kernel_cmd, **kw)
  File "C:\Users\lucas\anaconda3\lib\site-packages\jupyter_client\provisioning\local_provisioner.py", line 204, in launch_kernel
    self.process = launch_kernel(cmd, **scrubbed_kwargs)
  File "C:\Users\lucas\anaconda3\lib\site-packages\jupyter_client\launcher.py", line 169, in launch_kernel
    raise ex
  File "C:\Users\lucas\anaconda3\lib\site-packages\jupyter_client\launcher.py", line 157, in launch_kernel
    proc = Popen(cmd, **kwargs)
  File "C:\Users\lucas\anaconda3\lib\subprocess.py", line 951, in __init__
    self._execute_child(args, executable, preexec_fn, close_fds,
  File "C:\Users\lucas\anaconda3\lib\subprocess.py", line 1420, in _execute_child
    hp, ht, pid, tid = _winapi.CreateProcess(executable, args,
FileNotFoundError: [WinError 2] The system cannot find the file specified


Solution 1:[1]

I had the same problem. This post helped me to solve it. For some reason, the matlab kernel config file points to the wrong python location.

Solution

Edit the file %APPDATA%\jupyter\kernels\matlab\kernel.json so that the first argument points to the correct python executable. In my case from:

{"argv": ["/tmp/conda_envs/258853ccd52b78b326300497/bin/python", "-m", "matlab_kernel", ...

to

{"argv": ["C:\\Users\\YOURUSERNAME\\.conda\\envs\\ENVNAME\\python.exe", "-m", "matlab_kernel", ...

Or whatever is the correct python path to your environment (change YOURUSERNAME and ENVNAME). In windows you can find it using where python

Extra info

For debugging and finding the kernel.json file, I used

jupyter console --kernel matlab --debug

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 LaloGo