Jak sprawić, aby te względne importy działały w Pythonie 3?

Mam strukturę katalogów, która wygląda tak:

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

Wproject/foo/__init__.py Importuję klasy zfirst.py, second.py ithird.py i włóż je__all__.

Jest klasa wfirst.py o nazwieWonderfulThing w którym chciałbym użyćsecond.pyi chcesz zaimportować, importując* zfoo. (To jest poza zakresem tego pytania, dlaczego chciałbym to zrobić, zakładając, że mam dobry powód.)

Wsecond.py próbowałemfrom .foo import *, from foo import * ifrom . import * w żadnym z tych przypadków nie maWonderfulThing importowany. Próbowałem teżfrom ..foo import *, co powoduje błąd „Próba względnego importu poza pakiet najwyższego poziomu”.

Przeczytałem dokumentację i PEP i nie mogę się dowiedzieć, jak to zrobić. Każda pomoc byłaby doceniana.

Wyjaśnienie / edycja: Wygląda na to, że mogłem źle zrozumieć drogę__all__ działa w pakietach. Używałem go tak samo jak w modułach,

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

ale patrząc na dokumenty ponownie wydaje się to sugerować__all__ może być używany tylko w pakietach, aby określić nazwy modułów, które mają być domyślnie importowane; Wydaje się, że nie ma sposobu na włączenie czegokolwiek, co nie jest modułem.

Czy to jest poprawne?

Edytować: Import bez symboli wieloznacznych nie powiódł się (cannot import name WonderfulThing). Próbowaćfrom . import foo nie powiodło się, aleimport foo Prace. Niestety,dir(foo) nic nie pokazuje.

questionAnswers(1)

yourAnswerToTheQuestion