Fix virtualenv version parsing and improve error handling message

1) virtualenv --version(version 20.0.25)  dumps version info on stderr,
so subprocess call output check needs to include stderr as well
2) Update error message to make it clear to users when they need to install virtualenv.

TEST=running the flow locally

Change-Id: Ifc32e49589fb201a0485b069ab0b2b2e2eebbd45
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/infra_virtualenv/+/2273657
Reviewed-by: Prathmesh Prabhu <pprabhu@chromium.org>
Commit-Queue: Ned Nguyen <nednguyen@google.com>
Tested-by: Ned Nguyen <nednguyen@google.com>
diff --git a/venv/cros_venv/venvlib.py b/venv/cros_venv/venvlib.py
index 702cc02..0464bb2 100644
--- a/venv/cros_venv/venvlib.py
+++ b/venv/cros_venv/venvlib.py
@@ -227,7 +227,15 @@
     # Versions before 20.0.0 returned just the version.
     # The 20.0.0 series switched to:
     # virtualenv 20.0.13 from .../virtualenv/__init__.py
-    result = subprocess.check_output([_VIRTUALENV_COMMAND, '--version'])
+    try:
+      result = subprocess.check_output([_VIRTUALENV_COMMAND, '--version'],
+                                       stderr=subprocess.STDOUT)
+    except OSError:
+      raise EnvironmentError(
+          'Error executing virtualenv, make sure that you install '
+          'virtualenv first (see '
+          'https://virtualenv.pypa.io/en/latest/installation.html)')
+
     # This strips off "rc" and related tags, but we don't care for our use.
     m = re.match(br'^(virtualenv *)?([0-9.]+)', result)
     assert m, 'Could not find version in "%s"' % (result,)