__init__.py en la carpeta del proyecto rompe las pruebas de la nariz

árbol de proyectos:

. |-- bar.py `-- test |-- __init__.py `-- test_bar.py 

bar.py:

 def dumb_true(): return True 

pruebas / test_bar.py:

 import bar def test_bar_true(): assert bar.dumb_true() 

Puedo ejecutar nosetests desde dentro del proyecto o su directorio de prueba. Sin embargo, si agrego un __init__.py vacío a la carpeta del proyecto, ya no puedo ejecutar las pruebas nosetests desde el directorio de prueba, lo que no tiene ningún sentido para mí.

 . |-- bar.py |-- __init__.py <-- new, empty file, ruining everything `-- test |-- __init__.py `-- test_bar.py 

¿Puede alguien explicarme lo que está pasando aquí?

He leído mucho sobre este tema, a través de la documentación de la nariz / páginas de manual y en todo el Internet; ¡Pero me parece muy confuso cómo todo esto se resuelve!

Parece que tu pregunta fue respondida aquí .

Tienes un __init__.py en tu directorio de nivel superior. Eso lo hace un paquete. Si lo quitas, tus pruebas nos deberían funcionar.

Si no lo elimina, tendrá que cambiar su importación para importar dir.foo, donde dir es el nombre de su directorio.