<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 async def create_virtual_environment(loop=None):
 """ Create a virtual environment, and return the path to the virtual env directory, which should contain a "bin" directory with the `python` and `pip` binaries that can be used to a test install of a software package. :return: the path to the virtual environment, its python, and its site pkgs """

    tmp_dir = tempfile.mkdtemp()
    venv_dir = os.path.join(tmp_dir, VENV_NAME)
    proc1 = await asyncio.create_subprocess_shell(
        'virtualenv {}'.format(venv_dir), loop=loop)
    await proc1.communicate()
    if sys.platform == 'win32':
        python = os.path.join(venv_dir, 'Scripts', 'python.exe')
    else:
        python = os.path.join(venv_dir, 'bin', 'python')
    venv_site_pkgs = install_dependencies(python)

    log.info("Created virtual environment at {}".format(venv_dir))

    return venv_dir, python, venv_site_pkgs