[Python-checkins] r57945 - sandbox/trunk/setuptools/setuptools/command/install_egg_info.py

phillip.eby python-checkins at python.org
Tue Sep 4 06:07:57 CEST 2007


Author: phillip.eby
Date: Tue Sep  4 06:07:57 2007
New Revision: 57945

Modified:
   sandbox/trunk/setuptools/setuptools/command/install_egg_info.py
Log:
Fix import problems with system-installed nested namespace packages,
due to the parent package not having the child package as an attribute.


Modified: sandbox/trunk/setuptools/setuptools/command/install_egg_info.py
==============================================================================
--- sandbox/trunk/setuptools/setuptools/command/install_egg_info.py	(original)
+++ sandbox/trunk/setuptools/setuptools/command/install_egg_info.py	Tue Sep  4 06:07:57 2007
@@ -56,6 +56,30 @@
             return dst
         unpack_archive(self.source, self.target, skimmer)
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
     def install_namespaces(self):
         nsp = self._get_all_ns_packages()
         if not nsp: return
@@ -66,6 +90,12 @@
             f = open(filename,'wb')
             for pkg in nsp:
                 pth = tuple(pkg.split('.'))
+                trailer = '\n'
+                if '.' in pkg:
+                    trailer = (
+                        "; m and setattr(sys.modules[%r], %r, m)\n"
+                        % ('.'.join(pth[:-1]), pth[-1])
+                    )
                 f.write(
                     "import sys,new,os; "
                     "p = os.path.join(sys._getframe(1).f_locals['sitedir'], "
@@ -74,12 +104,11 @@
                     "m = not ie and "
                         "sys.modules.setdefault(%(pkg)r,new.module(%(pkg)r)); "
                     "mp = (m or []) and m.__dict__.setdefault('__path__',[]); "
-                    "(p not in mp) and mp.append(p)\n"
+                    "(p not in mp) and mp.append(p)%(trailer)s"
                     % locals()
                 )
             f.close()
 
-
     def _get_all_ns_packages(self):
         nsp = {}
         for pkg in self.distribution.namespace_packages or []:
@@ -92,32 +121,3 @@
         return nsp
 
 
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-


More information about the Python-checkins mailing list