Importations en termes relatifs en Python
-
09-10-2019 - |
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?
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.