Question

Salut à tous - je tire mes cheveux avec des importations par rapport en Python. J'ai lu la documentation 30 fois et de nombreux postes ici sur SO et d'autres forums -. Ne semble toujours pas au travail

Ma structure de répertoire ressemble actuellement à cette

src/
    __init__.py
    main.py
    components/
        __init__.py
        expander.py
        language_id.py
    utilities/
        __init__.py
        functions.py

Je veux expander.py et language_id.py d'avoir accès au module de fonctions. Je lance main.py python qui accède aux modules très bien avec de l'importation components.expander * et l'importation components.language_id *.

Cependant, l'intérieur expanseur de code et language_id pour accéder aux fonctions module:

from ..utilities.functions import *

Je reçois cette erreur:

ValueError: Attempted relative import beyond toplevel package

je suis allé sur un certain nombre de fois et il semble suivre la documentation. Quelqu'un at-il des idées de ce qui ne va pas ici?

Était-ce utile?

La solution

Nevermind je l'ai résolu:

src/
    main.py
    mod/
        __init__.py
        components/
            __init__.py
            expander.py
            language_id.py
        utilities/
            __init__.py
            functions.py

main.py se réfère ensuite aux sous-paquets comme:

from mod.components.expander import *
from mod.utilities.functions import *

expander.py et language_id.py avoir accès à functions.py avec:

from ..utilities.functions import *

Mais la chose intéressante est que j'avais un fichier texte dans le répertoire des composants usages expander.py. Cependant, lors de l'exécution, il n'a pas pu localiser le fichier même si elle était dans le même répertoire. Je me suis déplacé le fichier texte dans le même répertoire que main.py et cela a fonctionné. Semble contre-intuitif.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top