Opened 5 years ago

Closed 5 years ago

#20167 closed Bug (fixed)

import_by_path should show the original traceback on an ImportError

Reported by: grampajoe Owned by: grampajoe
Component: Utilities Version: master
Severity: Normal Keywords: import utils
Cc: Triage Stage: Unreviewed
Has patch: yes Needs documentation: no
Needs tests: no Patch needs improvement: no
Easy pickings: yes UI/UX: no


When django.utils.module_loading.import_by_path encounters an ImportError, it hides the original traceback:

>>> import_by_path('utils_tests.test_module.bad_module.content')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/home/grampajoe/Projects/django/django/utils/", line 28, in import_by_path
    error_prefix, module_path, e))
django.core.exceptions.ImproperlyConfigured: Error importing module utils_tests.test_module.bad_module: "No module named a_package_name_that_does_not_exist"

That gives us the original exception message, but the traceback isn't relevant or useful.

I've written a fix using six.reraise at

Change History (2)

comment:1 Changed 5 years ago by grampajoe

Has patch: set
Owner: changed from nobody to grampajoe
Status: newassigned

Added a pull request with the fix:
Tests passing with SQLite.

comment:2 Changed 5 years ago by Simon Charette <charette.s@…>

Resolution: fixed
Status: assignedclosed

In 2d0db67813d457dc890a2287d9e98593565d650f:

Fixed #20167 -- Preserve the traceback of ImportErrors in import_by_path.

Thanks @carljm for the review.

Note: See TracTickets for help on using tickets.
Back to Top