diff --git a/django/contrib/admin/__init__.py b/django/contrib/admin/__init__.py
index 56b64fa..56777d1 100644
--- a/django/contrib/admin/__init__.py
+++ b/django/contrib/admin/__init__.py
@@ -8,9 +8,12 @@ def autodiscover():
     not present. This forces an import on them to register any admin bits they
     may want.
     """
+    import imp
     from django.conf import settings
     for app in settings.INSTALLED_APPS:
         try:
-            __import__("%s.admin" % app)
+            imp.find_module('admin', __import__(app, fromlist=[app.split('.')[-1]]).__path__)
         except ImportError:
-            pass
+            # There is no admin.py, skip it
+            continue
+        __import__('%s.admin' % app)
