diff --git a/django/contrib/admin/__init__.py b/django/contrib/admin/__init__.py
index 704dc58..6f276a6 100644
--- a/django/contrib/admin/__init__.py
+++ b/django/contrib/admin/__init__.py
@@ -1,6 +1,28 @@
 from django.contrib.admin.options import ModelAdmin, HORIZONTAL, VERTICAL
 from django.contrib.admin.options import StackedInline, TabularInline
-from django.contrib.admin.sites import AdminSite, site
+from django.contrib.admin.sites import AdminSite
+
+# This global object represents the default admin site, for the common case.
+# You can instantiate AdminSite in your own code to create a custom admin site.
+# It is also possible to replace the default site by passing the path to your
+# own adminsite class to admin.set_default_site before calling admin.autodiscover().
+
+site = AdminSite()
+
+def set_default_site(import_path):
+    try:
+        dot = import_path.rindex('.')
+    except ValueError:
+        raise ImproperlyConfigured("%s isn't a adminsite class." % import_path)
+    module, classname = import_path[:dot], import_path[dot+1:]
+    try:
+        mod = __import__(module, {}, {}, [''])
+    except ImportError, e:
+        raise ImproperlyConfigured('Error importing module %s: "%s"' % (module, e))
+    try:
+        site = getattr(mod, classname)()
+    except AttributeError:
+        raise ImproperlyConfigured('The module "%s" does not define a "%s" class.' % (module, classname))
 
 def autodiscover():
     """
diff --git a/django/contrib/admin/sites.py b/django/contrib/admin/sites.py
index 81e43a1..8b8062b 100644
--- a/django/contrib/admin/sites.py
+++ b/django/contrib/admin/sites.py
@@ -402,6 +402,3 @@ class AdminSite(object):
             'app_list': [app_dict]
         }, context_instance=template.RequestContext(request))
 
-# This global object represents the default admin site, for the common case.
-# You can instantiate AdminSite in your own code to create a custom admin site.
-site = AdminSite()
