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.

Reply via email to