It seems to me like the biggest problem with a settings module not importing is that it's not safe to display a full error message about that file. You can't tell if DEBUG is on, and there may well be information in the settings that is a Bad Idea to leak on a production server.
Also, as a friendly heads-up, if you need to try/catch the ImportError at some point, you'll probably want to catch SyntaxError too. They're pretty similar in this situation, with both roughly meaning "The module failed to load." -FM On Sun, May 16, 2010 at 11:56 PM, Russell Keith-Magee <russ...@keith-magee.com> wrote: > On Mon, May 17, 2010 at 6:10 AM, cool-RR <ram.rac...@gmail.com> wrote: >> Hello all. >> >> This is my first time on Django-developers. >> >> I remember that a few months ago, when I was doing some Django work, >> there was something that annoyed me. I hope I'm remembering this >> correctly, please correct me if I'm wrong. It happened sometimes that >> the settings module in my project/app will cause an ImportError inside >> itself. This will be caught by the `except` in the block that tries to >> import the settings module, and this will cause it to raise another >> ImportError saying that the settings module wasn't found or caused an >> ImportError. This would make it difficult to understand how exactly >> the settings module was causing the ImportError. >> >> Is this precise? Does this still happen? > > Yes, there are places where import errors get swallowed, which can > lead to confusing or misleading stack traces. Some of these cases have > been improved in Django 1.2, but I'm sure there are many still > lurking. If you want to know if a specific case is still broken, > you'll need to test that case and let us know. > >> Because I have just implemented something that solves this annoyance >> for my own project, (which is unrelated to Django but also has a need >> to import a settings module, similarly to Django.) In my solution, if >> the settings module doesn't exist, I can get an ImportError (if I >> wish, I can also make it fail silently), but if there's an ImportError >> inside, I will have that error raised as itself, and not caught by my >> logic, making it easier to debug. >> >> I'm basically just trying `imp.find_module` before I import. > > You may want to check the newly added django.utils.module_loading; > this is a module that provides utilities for checking the existence of > modules independently of the import proces (which was the cause of > several of the import problems previously). > >> Would you have any interest in me patching Django to use this logic? > > We'd need to see the patch. Also, keep in mind that anything touching > the import logic is about 5 times harder than you think it is, even > when you take this advice into account :-) In particular, you need to > keep in mind > importing from eggs and importing from custom module loaders, both of > which behave in ways that are subtly (but significantly) different to > normal CPython module loading. The module_loading tool I mentioned > previously expanded from a 20 line method to a 60 line method because > of these differences. > > Yours, > Russ Magee %-) > > -- > You received this message because you are subscribed to the Google Groups > "Django developers" group. > To post to this group, send email to django-develop...@googlegroups.com. > To unsubscribe from this group, send email to > django-developers+unsubscr...@googlegroups.com. > For more options, visit this group at > http://groups.google.com/group/django-developers?hl=en. > > -- You received this message because you are subscribed to the Google Groups "Django developers" group. To post to this group, send email to django-develop...@googlegroups.com. To unsubscribe from this group, send email to django-developers+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/django-developers?hl=en.