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

I

Irmen de Jong

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
 
P

Peter Otten

Irmen said:
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).

A paragon of clarity -- ye lurkers, this is how a bug report should be.
Is there a problem with the rewritten import logic in Python 3.3?

Thanks
Irmen de Jong

I believe this is fixed, see http://bugs.python.org/issue15111
 
I

Irmen de Jong

A paragon of clarity -- ye lurkers, this is how a bug report should be.
:)


I believe this is fixed, see http://bugs.python.org/issue15111

Argh, why didn't I search the bug tracker first: I would have found that one for sure.
Anyway, thanks for pointing it out.

The bug is confusing but it doesn't break anything so far. I guess I'll be fine waiting
for 3.3.1.


Irmen
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
474,056
Messages
2,570,440
Members
47,101
Latest member
DoloresHol

Latest Threads

Top