diff --git a/django/apps/config.py b/django/apps/config.py index edd7a48a6f..88e52c1f05 100644 --- a/django/apps/config.py +++ b/django/apps/config.py @@ -139,7 +139,14 @@ class AppConfig(object): "'%s' must supply a name attribute." % entry) # Ensure app_name points to a valid module. - app_module = import_module(app_name) + try: + app_module = import_module(app_name) + except ImportError: + raise ImproperlyConfigured( + "Cannot import '%s'. Check that '%s.%s.name' is correct." % ( + app_name, mod_path, cls_name, + ) + ) # Entry is a path to an app config class. return cls(app_name, app_module) diff --git a/tests/apps/tests.py b/tests/apps/tests.py index c7fff0e738..639ce97758 100644 --- a/tests/apps/tests.py +++ b/tests/apps/tests.py @@ -78,7 +78,8 @@ class AppsTests(SimpleTestCase): with self.assertRaises(ImportError): with self.settings(INSTALLED_APPS=['there is no such app']): pass - with self.assertRaises(ImportError): + msg = "Cannot import 'there is no such app'. Check that 'apps.apps.NoSuchApp.name' is correct." + with self.assertRaisesMessage(ImproperlyConfigured, msg): with self.settings(INSTALLED_APPS=['apps.apps.NoSuchApp']): pass