imaginar la estructura de directorios:¿No deberían las importaciones ser absolutas por defecto en python27?
/ a/ __init__.py b.py c.py c.py
Archivo /a/b.py
parece:
import c should_be_absolute = c
Todos los demás archivos (incluyendo __init__
) están vacías.
Cuando se ejecuta un script de prueba (utilizando Python 2.7):
import a.b
print a.b.should_be_absolute
con PYTHONPATH=/
de un directorio vacío (por lo que nada se añade a PYTHONPATH
del directorio actual) consigo
<module 'a.c' from '/a/c.py'>
donde según a PEP 328 y la declaración import <> is always absolute
esperaría:
<module 'c' from '/c.py'>
La salida es la esperada cuando elimino el archivo /a/c.py
.
¿Qué me estoy perdiendo? Y si este es el comportamiento correcto, ¿cómo importar el módulo c
desde b
(en lugar de a.c
)?
Actualización:
Según python dev mailing list que parece que hay un error en la documentación. Las importaciones son no absoluto por defecto en python27.
¿Cuál es su ruta de acceso completa? ¿Es solo /? Probablemente debería estar usando un nombre de paquete raíz – jdi
FWIW, esto funciona como espera en Python 3. – geoffspear
@jdi - sí, la raíz es lo único en PYTHONPATH (editó la publicación original para hacerlo más explícito) – karolx