wrong ImportError message printed by python3.3 when it can't find a module?

Irmen de Jong irmen.NOSPAM at xs4all.nl
Fri Dec 7 15:46:28 EST 2012


Hi,

I'm seeing that Python 3.3.0 is not printing the correct ImportError when it can't
import a module that is imported from another module. Instead of printing the name of
the module it can't import, it prints the name of the module that is doing the faulty
import.

Behold:
I have created:
  importfail\
     __init__.py
     main.py
     sub.py


[L:\]type importfail\main.py
from . import sub

[L:\]type importfail\sub.py
import nonexisting_module

[L:\]


[L:\]c:\Python33\python.exe -m importfail.main
Traceback (most recent call last):
  File "C:\Python33\lib\runpy.py", line 160, in _run_module_as_main
    "__main__", fname, loader, pkg_name)
  File "C:\Python33\lib\runpy.py", line 73, in _run_code
    exec(code, run_globals)
  File ".\importfail\main.py", line 1, in <module>
    from . import sub
ImportError: cannot import name sub                # <--- huh ?


Python 3.2 and earlier do the right thing:

[L:\]c:\Python32\python.exe -m importfail.main
Traceback (most recent call last):
  File "C:\Python32\lib\runpy.py", line 160, in _run_module_as_main
    "__main__", fname, loader, pkg_name)
  File "C:\Python32\lib\runpy.py", line 73, in _run_code
    exec(code, run_globals)
  File "L:\importfail\main.py", line 1, in <module>
    from . import sub
  File "importfail\sub.py", line 1, in <module>
    import nonexisting_module
ImportError: No module named nonexisting_module        # <--- ok.

(this is on windows, but on osx I see the same behavior).


Is there a problem with the rewritten import logic in Python 3.3?

Thanks
Irmen de Jong



More information about the Python-list mailing list