Shouldn't the imports be absolute by default in python27?

Viewed 2918

Imagine the directory structure:

/
    a/
        __init__.py
        b.py
        c.py
    c.py

File /a/b.py looks like:

import c
should_be_absolute = c

All the other files (including __init__) are empty.

When running a test script (using python 2.7):

import a.b
print a.b.should_be_absolute

with PYTHONPATH=/ from an empty directory (so nothing is added to PYTHONPATH from current directory) I get

<module 'a.c' from '/a/c.py'>

where according to PEP 328 and the statement import <> is always absolute I would expect:

<module 'c' from '/c.py'>

The output is as expected when I remove the /a/c.py file.

What am I missing? And if this is the correct behavior - how to import the c module from b (instead of a.c)?

Update:

According to python dev mailing list it appears to be a bug in the documentation. The imports are not absolute by default in python27.

3 Answers
Related