Index: django/conf/__init__.py
===================================================================
--- django/conf/__init__.py	(revision 6819)
+++ django/conf/__init__.py	(working copy)
@@ -52,7 +52,7 @@
             if not settings_module: # If it's set but is an empty string.
                 raise KeyError
         except KeyError:
-            raise EnvironmentError, "Environment variable %s is undefined." % ENVIRONMENT_VARIABLE
+            raise ImportError, "Environment variable %s is undefined so settings cannot be imported." % ENVIRONMENT_VARIABLE   # NOTE: This is arguably an EnvironmentError, but that causes problems with Python's interactive help
 
         self._target = Settings(settings_module)
 
@@ -63,7 +63,7 @@
         argument must support attribute access (__getattr__)).
         """
         if self._target != None:
-            raise EnvironmentError, 'Settings already configured.'
+            raise RuntimeError, 'Settings already configured.'
         holder = UserSettingsHolder(default_settings)
         for name, value in options.items():
             setattr(holder, name, value)
@@ -82,7 +82,7 @@
         try:
             mod = __import__(self.SETTINGS_MODULE, {}, {}, [''])
         except ImportError, e:
-            raise EnvironmentError, "Could not import settings '%s' (Is it on sys.path? Does it have syntax errors?): %s" % (self.SETTINGS_MODULE, e)
+            raise ImportError, "Could not import settings '%s' (Is it on sys.path? Does it have syntax errors?): %s" % (self.SETTINGS_MODULE, e)
 
         # Settings that should be converted into tuples if they're mistakenly entered
         # as strings.
Index: django/core/management/__init__.py
===================================================================
--- django/core/management/__init__.py	(revision 6819)
+++ django/core/management/__init__.py	(working copy)
@@ -84,7 +84,7 @@
         try:
             from django.conf import settings
             apps = settings.INSTALLED_APPS
-        except (AttributeError, EnvironmentError):
+        except (AttributeError, ImportError):
             apps = []
 
         for app_name in apps:
@@ -99,7 +99,7 @@
         try:
             from django.conf import settings
             project_directory = setup_environ(__import__(settings.SETTINGS_MODULE))
-        except (AttributeError, EnvironmentError, ImportError):
+        except (AttributeError, ImportError):
             project_directory = None
 
         if project_directory:
Index: django/newforms/fields.py
===================================================================
--- django/newforms/fields.py	(revision 6819)
+++ django/newforms/fields.py	(working copy)
@@ -409,7 +409,7 @@
 try:
     from django.conf import settings
     URL_VALIDATOR_USER_AGENT = settings.URL_VALIDATOR_USER_AGENT
-except (ImportError, EnvironmentError):
+except ImportError:
     # It's OK if Django settings aren't configured.
     URL_VALIDATOR_USER_AGENT = 'Django (http://www.djangoproject.com/)'
 
Index: docs/settings.txt
===================================================================
--- docs/settings.txt	(revision 6819)
+++ docs/settings.txt	(working copy)
@@ -1166,12 +1166,12 @@
 settings.
 
 If you don't set ``DJANGO_SETTINGS_MODULE`` and don't call ``configure()``,
-Django will raise an ``EnvironmentError`` exception the first time a setting
-is accessed.
+Django will raise an ``ImportError`` exception the first time a setting
+is accessed.
 
 If you set ``DJANGO_SETTINGS_MODULE``, access settings values somehow, *then*
-call ``configure()``, Django will raise an ``EnvironmentError`` saying settings
-have already been configured.
+call ``configure()``, Django will raise a ``RuntimeError`` indicating
+that settings have already been configured.
 
 Also, it's an error to call ``configure()`` more than once, or to call
 ``configure()`` after any setting has been accessed.
