diff --git a/Modules/getpath.c b/Modules/getpath.c
index 78568137..db37a1b 100644
--- a/Modules/getpath.c
+++ b/Modules/getpath.c
@@ -87,7 +87,7 @@
  * Modules/Setup.  If the landmark is found, we're done.
  *
  * For the remaining steps, the prefix landmark will always be
- * lib/python$VERSION/string.py and the exec_prefix will always be
+ * lib/python$VERSION/os.py and the exec_prefix will always be
  * lib/python$VERSION/lib-dynload, where $VERSION is Python's version
  * number as supplied by the Makefile.  Note that this means that no more
  * build directory checking is performed; if the first step did not find
@@ -150,7 +150,7 @@
 #endif
 
 #ifndef LANDMARK
-#define LANDMARK "string.py"
+#define LANDMARK "os.py"
 #endif
 
 static char prefix[MAXPATHLEN+1];
@@ -265,6 +265,18 @@
 	int n;
 	char *vpath;
 
+	/* If PYTHONHOME is set, we believe it unconditionally */
+	if (home) {
+		char *delim;
+		strcpy(prefix, home);
+		delim = strchr(prefix, DELIM);
+		if (delim)
+			*delim = '\0';
+		joinpath(prefix, lib_python);
+		joinpath(prefix, LANDMARK);
+		return 1;
+	}
+
 	/* Check to see if argv[0] is in the build directory */
 	strcpy(prefix, argv0_path);
 	joinpath(prefix, "Modules/Setup");
@@ -290,19 +302,6 @@
 			return -1;
 	}
 
-	if (home) {
-		/* Check $PYTHONHOME */
-		char *delim;
-		strcpy(prefix, home);
-		delim = strchr(prefix, DELIM);
-		if (delim)
-			*delim = '\0';
-		joinpath(prefix, lib_python);
-		joinpath(prefix, LANDMARK);
-		if (ismodule(prefix))
-			return 1;
-	}
-
 	/* Search from argv0_path, until root is found */
 	strcpy(prefix, argv0_path);
 	do {
@@ -334,16 +333,8 @@
 {
 	int n;
 
-	/* Check to see if argv[0] is in the build directory */
-	strcpy(exec_prefix, argv0_path);
-	joinpath(exec_prefix, "Modules/Setup");
-	if (isfile(exec_prefix)) {
-		reduce(exec_prefix);
-		return -1;
-	}
-
+	/* If PYTHONHOME is set, we believe it unconditionally */
 	if (home) {
-		/* Check $PYTHONHOME */
 		char *delim;
 		delim = strchr(home, DELIM);
 		if (delim)
@@ -352,10 +343,17 @@
 			strcpy(exec_prefix, home);
 		joinpath(exec_prefix, lib_python);
 		joinpath(exec_prefix, "lib-dynload");
-		if (isdir(exec_prefix))
 			return 1;
 	}
 
+	/* Check to see if argv[0] is in the build directory */
+	strcpy(exec_prefix, argv0_path);
+	joinpath(exec_prefix, "Modules/Setup");
+	if (isfile(exec_prefix)) {
+		reduce(exec_prefix);
+		return -1;
+	}
+
 	/* Search from argv0_path, until root is found */
 	strcpy(exec_prefix, argv0_path);
 	do {
diff --git a/PC/getpathp.c b/PC/getpathp.c
index 2123b2a..4354853 100644
--- a/PC/getpathp.c
+++ b/PC/getpathp.c
@@ -53,7 +53,7 @@
 
    * We attempt to locate the "Python Home" - if the PYTHONHOME env var
      is set, we believe it.  Otherwise, we use the path of our host .EXE's
-     to try and locate our "landmark" (lib\\string.py) and deduce our home.
+     to try and locate our "landmark" (lib\\os.py) and deduce our home.
      - If we DO have a Python Home: The relevant sub-directories (Lib, 
        plat-win, lib-tk, etc) are based on the Python Home
      - If we DO NOT have a Python Home, the core Python Path is
@@ -110,7 +110,7 @@
  */
 
 #ifndef LANDMARK
-#define LANDMARK "lib\\string.py"
+#define LANDMARK "lib\\os.py"
 #endif
 
 static char prefix[MAXPATHLEN+1];
diff --git a/PC/os2vacpp/getpathp.c b/PC/os2vacpp/getpathp.c
index b7056ab..a4a4d0e 100644
--- a/PC/os2vacpp/getpathp.c
+++ b/PC/os2vacpp/getpathp.c
@@ -68,14 +68,14 @@
  *
  * Otherwise, if there is a PYTHONPATH environment variable, we return that.
  *
- * Otherwise we try to find $progpath/lib/string.py, and if found, then
+ * Otherwise we try to find $progpath/lib/os.py, and if found, then
  * root is $progpath/lib, and we return Python path as compiled PYTHONPATH
  * with all "./lib" replaced by $root (as above).
  *
  */
 
 #ifndef LANDMARK
-#define LANDMARK "lib\\string.py"
+#define LANDMARK "lib\\os.py"
 #endif
 
 static char prefix[MAXPATHLEN+1];
