from ..box_utils import decode, nms This line is giving error ImportError: attempted relative import with no known parent package What is this error and how to resolve this error?
3 Réponses :
Apparemment, box_utils.py
ne fait pas partie d'un package. Vous pouvez toujours importer des fonctions définies dans ce fichier, mais uniquement si le script python qui tente d'importer ces fonctions réside dans le même répertoire que box_utils.py
, consultez cette réponse .
Nota bene: Dans mon cas, je suis tombé sur cette erreur avec une instruction import avec un point, comme ceci: from .foo import foo
. Cette syntaxe, cependant, indique à Python que foo.py
fait partie d'un package, ce qui n'était pas le cas. L'erreur a disparu lorsque j'ai supprimé la période.
Si un dictionnaire différent contient script.py
, il est accessible depuis la racine. Par exemple:
Si votre programme est structuré:
alpha > beta > delta > gamma > epsilon > zeta
où alpha
, beta
, gamma
, delta
, epsilon
et zeta
sont des répertoires différents. Un script du répertoire epsilon
peut être appelé par:
from alpha.gamma.eplsilon import script
Mais que faire si vous souhaitez importer un fichier sans référencer le package racine? Par exemple, que se passe-t-il si l'on veut importer gamma/epsilon.py
depuis delta
avec une référence relative (c'est-à-dire ne faisant pas référence à alpha
)
@svangordon Cela m'intéresserait aussi. Ou en d'autres termes, beta est un package et gamma est un autre package. Mais ce ne sont pas deux sous-packages d'alpha. Comment gérer cela?
@svangordon: Je suppose que je l'ai compris. Si les deux sont des packages (c'est-à-dire qu'il y a des fichiers _ _ init _ _ .py en beta et gamma, mais pas en alpha), allez dans le répertoire alpha et tapez: pip install -e .
. Je n'ai pas essayé lorsque deux packages sont dans ce répertoire, mais au moins s'il n'y a qu'un seul package dans le répertoire et que vous faites cela, vous pouvez dans un autre type de fichier Python import beta
ou import beta.delta
from .foo import func ...