<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def run_module(uri, args, env_vars=None, name=DEFAULT_MODULE_NAME, cache=None, wait=True, capture_error=False):
 # type: (str, list, dict, str, bool, bool, bool) -> subprocess.Popen """Download, prepare and executes a compressed tar file from S3 or provided directory as a module. SageMaker Python SDK saves the user provided scripts as compressed tar files in S3 https://github.com/aws/sagemaker-python-sdk. This function downloads this compressed file, transforms it as a module, and executes it. Args: uri (str):
 the location of the module. args (list):
 A list of program arguments. env_vars (dict):
 A map containing the environment variables to be written. name (str):
 name of the script or module. cache (bool):
 If True it will avoid downloading the module again, if already installed. wait (bool):
 If True run_module will wait for the user module to exit and check the exit code, otherwise it will launch the user module with subprocess and return the process object. """

    _warning_cache_deprecation(cache)
    env_vars = env_vars or {}
    env_vars = env_vars.copy()

    _files.download_and_extract(uri, name, _env.code_dir)

    prepare(_env.code_dir, name)
    install(_env.code_dir)

    _env.write_env_vars(env_vars)

    return run(name, args, env_vars, wait, capture_error)