Tengo algunos problemas para estructurar mi proyecto python. Actualmente es un grupo de archivos en la misma carpeta. He tratado de estructurarlo comoPruebas y estructura de paquete python
proj/
__init__.py
foo.py
...
bar/
__init__.py
foobar.py
...
tests/
foo_test.py
foobar_test.py
...
El problema es que no soy capaz, desde los directorios internos, para importar los módulos de los directorios exteriores. Esto es particularmente molesto con las pruebas.
He leído PEP 328 sobre importaciones relativas y PEP 366 sobre importaciones relativas desde el módulo principal. Pero ambos métodos requieren que el paquete base esté en mi PYTHONPATH. De hecho obtengo el siguiente error
ValueError: Attempted relative import in non-package.
por lo que añade el siguiente código repetitivo en la parte superior de los archivos de prueba
import os, sys
sys.path.append(os.path.join(os.getcwd(), os.path.pardir))
Todavía me sale el mismo error. ¿Cuál es la forma correcta de
- estructura de un paquete, con pruebas, y
- añadir el directorio base a la ruta para permitir la importación?
EDITAR a lo solicitado en el comentario, añado una importación ejemplo que falla (en el archivo de foo_test.py
)
import os, sys
sys.path.append(os.path.join(os.getcwd(), os.path.pardir))
from ..foo import Foo
¿Puedes mostrar un ejemplo de importación que falla? –
Además, incluya el valor de su 'PYTHONPATH' –
' echo $ PYTHONPATH' solo está vacío en este momento. – Andrea