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.
docstr: Launch the process and return the process object.
docstr_tok: ["Launch","the","process","and","return","the","process","object","."]
code: def _launch(self, run_config, args, **kwargs):
      """Launch the process and return the process object."""
      try:
          with sw("popen"):
              return subprocess.Popen(
                  args, cwd=run_config.cwd, env=run_config.env, **kwargs
              )
      except OSError as e:
          logging.exception("Failed to launch")
          raise SC2LaunchError("Failed to launch: %s" % args) from e
  
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 11 for calling the StarcraftProcess obj's underlying member method code with example usage: obj._launch(run_config, args) and returns: subprocess