In env_setup.py, never trust the user's Python env

Change-Id: If239b6398b2f1aa5531b33077de6781a2ef6ddb4
Reviewed-on: https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/14344
Commit-Queue: Joe Ethier <jethier@google.com>
Reviewed-by: Rob Mohr <mohrr@google.com>
diff --git a/pw_env_setup/py/pw_env_setup/env_setup.py b/pw_env_setup/py/pw_env_setup/env_setup.py
index 7136c0a..fb98975 100755
--- a/pw_env_setup/py/pw_env_setup/env_setup.py
+++ b/pw_env_setup/py/pw_env_setup/env_setup.py
@@ -41,30 +41,28 @@
 # If we're running oxidized, filesystem-centric import hacks won't work. In that
 # case, jump straight to the imports and assume oxidation brought in the deps.
 if not getattr(sys, 'oxidized', False):
-    try:
-        # Even if we're running from source, the user may have a functioning
-        # Python environment already set up. Prefer using it over hacks.
-        # pylint: disable=no-name-in-module
-        from pw_env_setup import cargo_setup
-        # pylint: enable=no-name-in-module
-    except ImportError:
-        old_sys_path = copy.deepcopy(sys.path)
-        filename = None
-        if hasattr(sys.modules[__name__], '__file__'):
-            filename = __file__
-        else:
-            # Try introspection in environments where __file__ is not populated.
-            frame = inspect.currentframe()
-            if frame is not None:
-                filename = inspect.getfile(frame)
-        # If none of our strategies worked, the imports are going to fail.
-        if filename is None:
-            raise
-        sys.path.append(
-            os.path.abspath(
-                os.path.join(filename, os.path.pardir, os.path.pardir)))
-        import pw_env_setup  # pylint: disable=unused-import
-        sys.path = old_sys_path
+    old_sys_path = copy.deepcopy(sys.path)
+    filename = None
+    if hasattr(sys.modules[__name__], '__file__'):
+        filename = __file__
+    else:
+        # Try introspection in environments where __file__ is not populated.
+        frame = inspect.currentframe()
+        if frame is not None:
+            filename = inspect.getfile(frame)
+    # If none of our strategies worked, we're in a strange runtime environment.
+    # The imports are almost certainly going to fail.
+    if filename is None:
+        raise RuntimeError(
+            'Unable to locate pw_env_setup module; cannot continue.\n'
+            '\n'
+            'Try updating to one of the standard Python implemetations:\n'
+            '  https://www.python.org/downloads/')
+    sys.path.append(
+        os.path.abspath(os.path.join(filename, os.path.pardir,
+                                     os.path.pardir)))
+    import pw_env_setup  # pylint: disable=unused-import
+    sys.path = old_sys_path
 
 # pylint: disable=wrong-import-position
 from pw_env_setup.cipd_setup import update as cipd_update