diff -r 64614eb56330 django/utils/module_loading.py
--- a/django/utils/module_loading.py	Wed Apr 21 23:43:35 2010 +0000
+++ b/django/utils/module_loading.py	Fri Apr 23 22:05:23 2010 +0800
@@ -2,18 +2,17 @@
 import imp
 
 def module_has_submodule(mod, submod_name):
-    # If the module was loaded from an egg, __loader__ will be set and 
+    # If the module was loaded from an egg, __loader__ will be set and
     # its find_module must be used to search for submodules.
     loader = getattr(mod, '__loader__', None)
     if loader:
-        mod_path = "%s.%s" % (mod.__name__, submod_name)
-        mod_path = mod_path[len(loader.prefix):]
+        mod_path = "%s.%s" % (mod.__name__.rsplit('.',1)[-1], submod_name)
         x = loader.find_module(mod_path)
         if x is None:
             # zipimport.zipimporter.find_module is documented to take
-            # dotted paths but in fact through Pyton 2.7 is observed 
+            # dotted paths but in fact through Python 2.7 is observed
             # to require os.sep in place of dots...so try using os.sep
-            # if the dotted path version failed to find the requested 
+            # if the dotted path version failed to find the requested
             # submodule.
             x = loader.find_module(mod_path.replace('.', os.sep))
         return x is not None
