Como faço para que essas importações relativas funcionem no Python 3?

Eu tenho uma estrutura de diretórios que se parece com isso:

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

Emproject/foo/__init__.py Eu importo classes defirst.py, second.py ethird.py e colocá-los em__all__.

Há uma aula emfirst.py nomeadoWonderfulThing que eu gostaria de usar emsecond.pye deseja importar importando* defoo. (Está fora do escopo desta questão porque eu gostaria de fazer isso, suponha que eu tenha uma boa razão.)

Emsecond.py eu tenteifrom .foo import *, from foo import * efrom . import * e em nenhum desses casos éWonderfulThing importado. Eu também tenteifrom ..foo import *, que gera um erro "Tentativa de importação relativa além do pacote de nível superior".

Li os documentos e o PEP e não sei como fazer isso funcionar. Qualquer ajuda seria apreciada.

Esclarecimento / Edição: Parece que eu posso estar entendendo mal o caminho__all__ funciona em pacotes. Eu estava usando o mesmo que em módulos,

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

mas olhando para os documentos novamente, parece sugerir que__all__ só pode ser usado em pacotes para especificar os nomes dos módulos a serem importados por padrão; parece não haver nenhuma maneira de incluir qualquer coisa que não seja um módulo.

Isso está correto?

Editar: Uma importação não-curinga falhou (cannot import name WonderfulThing). Tentandofrom . import foo falhou, masimport foo trabalho. Infelizmente,dir(foo) não mostra nada.

questionAnswers(1)

yourAnswerToTheQuestion