Commits

Anonymous committed b8b866d

[svn r3583] Add /Library/Python/X.Y/site-packages to sys.path on Macs, from Andrea Rech

  • Participants
  • Parent commits 40714ea

Comments (0)

Files changed (3)

   dict(__file__="path_to/activate_this.py"))`` -- this will activate
   the environment in place, similar to what `the mod_python example
   does <http://code.google.com/p/modwsgi/wiki/VirtualEnvironments>`_.
+* For Mac framework builds of Python, the site-packages directory
+  ``/Library/Python/X.Y/site-packages`` is added to ``sys.path``, from
+  Andrea Rech.
 * Some platform-specific modules in Macs are added to the path now
   (``plat-darwin/``, ``plat-mac/``, ``plat-mac/lib-scriptpackages``),
   from Andrea Rech.

support-files/site.py

     prefixes = [os.path.join(sys_prefix, "local"), sys_prefix]
     if exec_prefix != sys_prefix:
         prefixes.append(os.path.join(exec_prefix, "local"))
+
     for prefix in prefixes:
         if prefix:
             if sys.platform in ('os2emx', 'riscos') or sys.platform[:4] == 'java':
                 sitedirs = [os.path.join(prefix, "Lib", "site-packages")]
+            elif sys.platform == 'darwin' and prefix == sys_prefix:
+
+                if prefix.startswith("/System/Library/Frameworks/"): # Apple's Python
+
+                    sitedirs = [os.path.join("/Library/Python", sys.version[:3], "site-packages"),
+                                os.path.join(prefix, "Extras", "lib", "python")]
+
+                else: # any other Python distros on OSX work this way
+                    sitedirs = [os.path.join(prefix, "lib",
+                                             "python" + sys.version[:3], "site-packages")]
+
             elif os.sep == '/':
                 sitedirs = [os.path.join(prefix,
                                          "lib",
 
 ##file site.py
 SITE_PY = """
-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
+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
 """.decode("base64").decode("zlib")
 
 ##file ez_setup.py