code: def start(self):
      if self.user and self.prefix:
          self.exit(
              "Can't specify both user and prefix. Please choose one or the other."
          )
      try:
          self.kernel_spec_manager.install_kernel_spec(
              self.sourcedir,
              kernel_name=self.kernel_name,
              user=self.user,
              prefix=self.prefix,
              replace=self.replace,
          )
      except OSError as e:
          if e.errno == errno.EACCES:
              print(e, file=sys.stderr)
              if not self.user:
                  print(
                      "Perhaps you want to install with `sudo` or `--user`?",
                      file=sys.stderr,
                  )
              self.exit(1)
          elif e.errno == errno.EEXIST:
              print(
                  "A kernel spec is already present at %s" % e.filename,
                  file=sys.stderr,
              )
              self.exit(1)
          raise
  
imports: from __future__ import print_function
  import errno
  import os.path
  import sys
  import json
  from traitlets.config.application import Application
  from jupyter_core.application import JupyterApp, base_flags, base_aliases
  from traitlets import Instance, Dict, Unicode, Bool, List
  from .None import __version__
  from .kernelspec import KernelSpecManager
label_desc: Use image node_id 4 for calling the InstallKernelSpec obj's underlying member method code with example usage: obj.start() without return types