¿Cómo puedo hacer que estas importaciones relativas funcionen en Python 3?

Tengo una estructura de directorios que se parece a esto:

project/
        __init__.py
        foo/
            __init.py__
            first.py
            second.py
            third.py
        plum.py

Enproject/foo/__init__.py Yo importo clases defirst.py, second.py ythird.py y ponerlos en__all__.

Hay una clase enfirst.py llamadoWonderfulThing que me gustaría usar ensecond.py, y quiere importar importando* desdefoo. (Está fuera del alcance de esta pregunta por qué me gustaría hacerlo, suponiendo que tengo una buena razón).

Ensecond.py He intentadofrom .foo import *, from foo import * yfrom . import * y en ninguno de estos casos esWonderfulThing importado. Yo tambien lo intentéfrom ..foo import *, que genera un error "Intento de importación relativa más allá del paquete de nivel superior".

He leído los documentos y el PEP, y no puedo averiguar cómo hacer que esto funcione. Cualquier ayuda sería apreciada.

Aclaración / Edición: Parece que podría haber estado malinterpretando el camino__all__ Trabajos en paquetes. Lo estaba usando igual que en los módulos,

from .first import WonderfulThing
__all__ = [ "WonderfulThing" ]

Pero mirando los documentos de nuevo, parece sugerir que__all__ solo se puede utilizar en paquetes para especificar los nombres de los módulos que se importarán de forma predeterminada; No parece haber ninguna manera de incluir algo que no sea un módulo.

¿Es esto correcto?

Editar: Falló una importación sin comodín (cannot import name WonderfulThing). Molestofrom . import foo fallado, peroimport foo trabajos. Desafortunadamente,dir(foo) no muestra nada

Respuestas a la pregunta(1)

Su respuesta a la pregunta