class_docstr: Launch a starcraft server, initialize a controller, and later, clean up.
  
  This is best used from run_configs, which decides which version to run, and
  where to find it.
  
  It is important to call `close` or use it as a context manager, otherwise
  you'll likely leak temp files and SC2 processes.
code: def _check_exists(self, exec_path):
      if not os.path.isfile(exec_path):
          raise RuntimeError(
              "Trying to run '%s', but it doesn't exist" % exec_path
          )
      if not os.access(exec_path, os.X_OK):
          raise RuntimeError(
              "Trying to run '%s', but it isn't executable." % exec_path
          )
  
imports: import os
  import platform
  import shutil
  import subprocess
  import tempfile
  import time
  from absl import flags
  from absl import logging
  import portpicker
  from pysc2.lib import remote_controller
  from pysc2.lib import stopwatch
label_desc: Use image node_id 10 for calling the StarcraftProcess obj's underlying member method code with example usage: obj._check_exists(exec_path) without return types