code: async def create_virtual_environment(loop=None):
      
      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
docs: 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