diff options
-rwxr-xr-x | setuptools.txt | 4 | ||||
-rwxr-xr-x | setuptools/command/install_egg_info.py | 62 |
2 files changed, 35 insertions, 31 deletions
diff --git a/setuptools.txt b/setuptools.txt index 8f4eb7d1..226caeb7 100755 --- a/setuptools.txt +++ b/setuptools.txt @@ -2616,6 +2616,10 @@ Release Notes/Change History * Fixed ``distutils.filelist.findall()`` crashing on broken symlinks, and ``egg_info`` command failing on new, uncommitted SVN directories. + * Fix import problems with nested namespace packages installed via + ``--root`` or ``--single-version-externally-managed``, due to the + parent package not having the child package as an attribute. + 0.6c6 * Added ``--egg-path`` option to ``develop`` command, allowing you to force ``.egg-link`` files to use relative paths (allowing them to be shared across diff --git a/setuptools/command/install_egg_info.py b/setuptools/command/install_egg_info.py index 8f972638..939340c5 100755 --- a/setuptools/command/install_egg_info.py +++ b/setuptools/command/install_egg_info.py @@ -56,6 +56,30 @@ class install_egg_info(Command): 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 @@ class install_egg_info(Command): 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 @@ class install_egg_info(Command): "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 @@ class install_egg_info(Command): return nsp - - - - - - - - - - - - - - - - - - - - - - - - - - - - - |