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)
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.")