def clean_kernel_spec(user=True, prefix=None):
    mgr = KernelSpecManager()
    # NOTE: remove_kernel_spec() and get_all_specs() does not support explicit prefix.
    #       Sometimes we may need to perform --clean-only multiple times to completely
    #       remove all kernelspecs installed around venvs and system global directories.
    for name, info in mgr.get_all_specs().items():
        if name.startswith('backend'):
            print("Removing existing Backend.AI kernel: {0}"
                  .format(info['spec']['display_name']))
            mgr.remove_kernel_spec(name)
Ejemplo n.º 2
0
    async def _init_jupyter_kernel(self) -> None:
        """Detect ipython kernel spec for backend.ai and start it if found.

        Called after `init_with_loop`. `jupyter_kspec_name` should be defined to
        initialize jupyter kernel.
        """
        # Make inline backend defaults in Matplotlib.
        kconfigdir = Path('/home/work/.ipython/profile_default/')
        kconfigdir.mkdir(parents=True, exist_ok=True)
        kconfig_file = kconfigdir / 'ipython_kernel_config.py'
        kconfig_file.write_text("c.InteractiveShellApp.matplotlib = 'inline'")

        kernelspec_mgr = KernelSpecManager()
        kernelspec_mgr.ensure_native_kernel = False
        kspecs = kernelspec_mgr.get_all_specs()
        for kname in kspecs:
            if self.jupyter_kspec_name in kname:
                log.debug('starting ' + kname + ' kernel...')
                self.kernel_mgr = KernelManager(kernel_name=kname)
                self.kernel_mgr.start_kernel()
                if not self.kernel_mgr.is_alive():
                    log.error('jupyter query mode is disabled: '
                              'failed to start jupyter kernel')
                else:
                    self.kernel_client = self.kernel_mgr.client()
                    self.kernel_client.start_channels(shell=True,
                                                      iopub=True,
                                                      stdin=True,
                                                      hb=True)
                    try:
                        self.kernel_client.wait_for_ready(timeout=10)
                        # self.init_jupyter_kernel()
                    except RuntimeError:
                        # Clean up for client and kernel will be done in `shutdown`.
                        log.error('jupyter channel is not active!')
                        self.kernel_mgr = None
                break
        else:
            log.debug('jupyter query mode is not available: '
                      'no jupyter kernelspec found')
            self.kernel_mgr = None
from jupyter_client.kernelspec import KernelSpecManager

manager = KernelSpecManager()
kernels = manager.get_all_specs().keys()

assert "scijava" in kernels

print("Scijava kernel correctly installed.")