def exec_scratch_virtualenv(args):
scratch = Scratch()<EOL>if not exists(scratch.python):<EOL><INDENT>run(('<STR_LIT>', scratch.venv))<EOL><DEDENT>if not exists(join(scratch.src, '<STR_LIT>')):<EOL><INDENT>scratch_python = venv_python(scratch.venv)<EOL>tmp = scratch.src + '<STR_LIT>'<EOL>run((scratch_python, '<STR_LIT>', '<STR_LIT>', '<STR_LIT>', '<STR_LIT>', '<STR_LIT>', tmp))<EOL>from os import rename<EOL>rename(tmp, scratch.src)<EOL><DEDENT>import sys<EOL>from os.path import realpath<EOL>if realpath(sys.prefix) != realpath(scratch.venv):<EOL><INDENT>exec_((scratch.python, dotpy(__file__)) + args)  <EOL><DEDENT>sys.path[<NUM_LIT:0>] = scratch.src<EOL>
goals:
    - get any random site-packages off of the pythonpath
    - ensure we can import virtualenv
    - ensure that we're not using the interpreter that we may need to delete
    - idempotency: do nothing if the above goals are already met