Index: scipy/__init__.py
===================================================================
--- scipy/__init__.py	(revision 1756)
+++ scipy/__init__.py	(working copy)
@@ -25,6 +25,11 @@
 except ImportError:
     show_core_config = None
 
+try:
+    import pkg_resources # activate namespace packages (manipulates __path__)
+except ImportError:
+    pass
+
 class PackageLoader:
     def __init__(self):
         """ Manages loading SciPy packages.
@@ -32,7 +37,7 @@
 
         self.parent_frame = frame = sys._getframe(1)
         self.parent_name = eval('__name__',frame.f_globals,frame.f_locals)
-        self.parent_path = eval('__path__[0]',frame.f_globals,frame.f_locals)
+        self.parent_paths = eval('__path__',frame.f_globals,frame.f_locals)
         if not frame.f_locals.has_key('__all__'):
             exec('__all__ = []',frame.f_globals,frame.f_locals)
         self.parent_export_names = eval('__all__',frame.f_globals,frame.f_locals)
@@ -41,12 +46,10 @@
         self.imported_packages = []
         self.verbose = None
 
-    def _get_info_files(self, parent_path=None):
+    def _get_info_files(self, parent_path):
         """ Return info.py files from parent_path subdirectories.
         """
         from glob import glob
-        if parent_path is None:
-            parent_path = self.parent_path
         info_files = glob(os.path.join(parent_path,'*','info.py'))
         for info_file in glob(os.path.join(parent_path,'*','info.pyc')):
             if info_file[:-1] not in info_files:
@@ -55,27 +58,40 @@
             info_files.extend(self._get_info_files(os.path.dirname(info_file)))
         return info_files
 
+    def _get_info_files_and_parent_paths(self):
+        """ Return info.py files and parent_path for all namespace packages
+        """
+        info_files_and_parent_paths = []
+        for parent_path in self.parent_paths:
+            info_files = self._get_info_files( parent_path )
+            for info_file in info_files:
+                info_files_and_parent_paths.append( (info_file, parent_path) )
+        return info_files_and_parent_paths
+
     def _init_info_modules(self, packages=None):
         """Initialize info_modules = {<package_name>: <package info.py module>}.
         """
         import imp
         if packages is None:
-            info_files = self._get_info_files()
+            info_files_and_parent_paths = self._get_info_files_and_parent_paths()
         else:
-            info_files = []
+            info_files_and_parent_paths = []
             for package in packages:
                 package = os.path.join(*package.split('.'))
-                info_file = os.path.join(self.parent_path,package,'info.py')
-                if not os.path.isfile(info_file): info_file += 'c'
-                if os.path.isfile(info_file):
-                    info_files.append(info_file)
-                else:
+                found_package = False
+                for parent_path in self.parent_paths:
+                    info_file = os.path.join(parent_path,package,'info.py')
+                    if not os.path.isfile(info_file): info_file += 'c'
+                    if os.path.isfile(info_file):
+                        info_files_and_parent_paths.append((info_file,parent_path))
+                        found_package = True
+                if not found_package:
                     self.warn('Package %r does not have info.py file. Ignoring.'\
                               % package)
 
         info_modules = self.info_modules
-        for info_file in info_files:
-            package_name = os.path.dirname(info_file[len(self.parent_path)+1:])\
+        for info_file,parent_path in info_files_and_parent_paths:
+            package_name = os.path.dirname(info_file[len(parent_path)+1:])\
                            .replace(os.sep,'.')
             if info_modules.has_key(package_name):
                 continue
