--- Python-2.4.2-001/setup.py	2007-01-23 16:18:37.000000000 +0100
+++ Python-2.4.2/setup.py	2007-01-23 16:26:43.000000000 +0100
@@ -239,7 +239,18 @@
         return sys.platform
 
     def detect_modules(self):
-        # Ensure that /usr/local is always used
+        try:
+            modules_include_dirs = os.environ["PYTHON_MODULES_INCLUDE"].split()
+        except KeyError:
+            modules_include_dirs = ['/usr/include']
+        try:
+            modules_lib_dirs = os.environ["PYTHON_MODULES_LIB"].split()
+        except KeyError:
+            modules_lib_dirs = ['/usr/lib']
+        for dir in modules_include_dirs:
+                add_dir_to_list(self.compiler.include_dirs, dir)
+        for dir in modules_lib_dirs:
+                add_dir_to_list(self.compiler.library_dirs, dir)
 
         # Add paths to popular package managers on OS X/darwin
         if sys.platform == "darwin":
@@ -258,11 +269,8 @@
         # lib_dirs and inc_dirs are used to search for files;
         # if a file is found in one of those directories, it can
         # be assumed that no additional -I,-L directives are needed.
-        lib_dirs = self.compiler.library_dirs + [
-            '/lib64', '/usr/lib64',
-            '/lib', '/usr/lib',
-            ]
-        inc_dirs = self.compiler.include_dirs + ['/usr/include']
+        lib_dirs = self.compiler.library_dirs
+        inc_dirs = self.compiler.include_dirs
         exts = []
 
         platform = self.get_platform()
