Maison >développement back-end >Tutoriel Python >Pourquoi Python échoue-t-il aux importations relatives à partir d'un répertoire de packages lors de l'utilisation de « python -m » ?
Erreur au-delà du package de niveau supérieur lors de l'importation relative
Une erreur déroutante se produit lors de la tentative d'importation relative à partir des sous-modules d'un package lorsqu'il est exécuté à partir de dans le répertoire du package. Plus précisément, l'erreur « ValueError : tentative d'importation relative au-delà du package de niveau supérieur » est rencontrée.
Cette erreur provient du comportement particulier de Python consistant à ne pas enregistrer l'emplacement à partir duquel un package a été chargé. Par conséquent, lors de l'exécution d'un module en utilisant python -m package_name.module_name, le répertoire de travail courant n'est pas considéré comme un package.
Par conséquent, une tentative d'importation relative comme from ..A import foo, qui vise à accéder à un module dans un répertoire frère, entraîne le message d'erreur. En effet, Python ne dispose pas de la référence nécessaire au répertoire frère.
En revanche, l'exécution du module à l'aide de python -m package_name.package_submodule.module_name permet une résolution réussie de l'instruction from ..A import foo import. Dans ce cas, Python conserve la connaissance du répertoire parent, ce qui permet d'accéder aux répertoires frères.
On ne sait toujours pas pourquoi Python ne considère pas le répertoire de travail actuel comme un package, malgré son utilité pratique. Cette limitation peut entraîner de la confusion et des erreurs inattendues lors de l'exécution d'importations relatives à partir du répertoire du package.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!