importation relative Python

Vous pouvez importer des packages relativement à l’intérieur d’un projet Python. Si vous faites une erreur lors de l’importation relative d’un package, vous rencontrerez l’erreur au-delà du package de niveau supérieur lors de l’importation relative.

Dans ce guide, nous va discuter de ce que signifie cette erreur et pourquoi elle est soulevée. Nous allons parcourir un exemple de cette erreur pour vous aider à apprendre comment écrire avec succès une instruction d’importation relative dans votre projet.

Au-delà de l’erreur de package de niveau supérieur dans l’importation relative

Un parent l’import utilise le nom d’un module pour déterminer son emplacement.

Considérez l’import relatif suivant :

Cela importera le "app‚" module Python du répertoire au-dessus du dossier dans lequel le programme avec cette instruction d’importation est écrit.

Disons que ce fichier s’appelait "program.py‚" et était contenu dans un dossier appelé "app". Notre projet principal s’appelle "g√¢teau". Notre structure de fichier ressemblerait à ceci :

Lorsque nous exécutons le "program.py‚" fichier, Python voit notre déclaration d’importation comme :

Nous importons depuis le "programme‚" plutôt que de notre répertoire de travail actuel (le dossier que nous consultons).

81 % des participants ont déclaré qu’ils se sentaient plus confiants quant à leurs perspectives d’emploi en technologie après avoir assisté à un bootcamp. Soyez jumelé à un bootcamp aujourd’hui.

Le diplômé moyen d’un bootcamp a passé moins de six mois en transition de carrière, du démarrage d’un bootcamp à la recherche de son premier emploi.

C’est parce que le "programme&rdquo ; est deux répertoires derrière celui que nous regardons. Les fichiers __init__.py indiquent à Python que nous travaillons avec nos propres packages Python. Ce fichier est vide dans les deux cas.

Vos programmes doivent utiliser cette structure, sinon vous rencontrerez une erreur.

Un exemple de scénario

Nous avons un projet appelé "g√¢teau" qui imprime la déclaration "J’aime le g√¢teau !" à la console. Ce projet va devenir plus compliqué, nous utilisons donc des modules pour diviser notre code.

La structure du fichier de notre projet ressemble à ceci :

Ce code se trouve dans un dossier appelé "cake&rdquo ;. Dans notre fichier app.py, nous avons une instruction qui importe notre fichier program.py :

Il s’agit d’une déclaration d’import standard. Dans le fichier app/program.py, nous avons une déclaration d’import relative :

Ce code importe le fichier "printer‚" depuis le répertoire au-dessus de app/. Le répertoire ci-dessus app/ est le répertoire principal pour ou r project.

Notre fichier printer.py contient une instruction d’impression :

Laissez‚Äô s essayez d’exécuter notre programme pour voir si cela fonctionne. Nous allons exécuter notre fichier app.py car il s’agit du fichier principal de notre projet :

Lorsque nous exécutons ce fichier, nous voyons le message suivant :

Notre fichier program.py ne peut pas importer notre "imprimante‚" module.

La solution

Nous essayons d’importer "imprimante‚" dans notre "app.program‚" déposer. C’est un problème car "imprimante" lui-même n’est pas dans un paquet. Les importations relatives ne fonctionnent qu’à l’intérieur des packages.

Pour résoudre ce problème, nous devons modifier la structure de répertoires de notre projet. Nous devons ajouter notre "imprimante" et notre "app" dossier dans son propre répertoire afin que "printer‚" est dans un paquet. Cela nous permettra de référencer notre "imprimante" dans le fichier "app‚" dossier.

Nous pouvons conserver notre fichier app.py dans son répertoire actuel car il référencera nos sous-répertoires.

Déplaçons tous nos fichiers, à l’exception de app.py, dans un nouveau dossier :

Tous nos fichiers de projet, à part app.py, se trouvent dans un nouveau dossier appelé "cake&rdquo ;. Nous devons modifier notre fichier app.py afin de référencer le "cake‚" module :

Cela importera le "programme‚" fichier qui se trouve dans le répertoire cake/app.

Maintenant que notre fichier printer.py est dans son propre package, nous devrions pouvoir exécuter notre projet avec succès. program.py devrait pouvoir accéder à printer.py car les deux fichiers sont dans un package.

"Career Karma est entré dans ma vie au moment o√π j’en avais le plus besoin et m’a rapidement aidé à suivre un bootcamp. Deux mois après avoir obtenu mon diplôme, j’ai trouvé l’emploi de mes rêves qui correspondait à mes valeurs et à mes objectifs dans la vie !"

Venus, ingénieur logiciel chez Rockbot

Exécutons notre code et voyons ce qui se passe :

Notre programme imprime avec succès le message "J’aime le g√¢teau !" sur la console. Ce message est défini dans printer.py, comme nous en avons parlé plus tôt.

Cela nous indique que notre fichier program.py a réussi à importer le fichier printer.py. Lorsque nous avons importé le fichier, son contenu a été exécuté.

Conclusion

Le erreur de package de niveau supérieur dans l’importation relative erreur se produit lorsque vous utilisez une importation relative sans que le fichier que vous importez fasse partie d’un package. Pour corriger cette erreur, assurez-vous que tous les répertoires que vous importez relativement se trouvent dans leurs propres packages.

Vous disposez désormais des ressources nécessaires pour Vivez cette erreur Python courante comme un pro !

Shop

Learn programming in R: courses

$

Best Python online courses for 2022

$

Best laptop for Fortnite

$

Best laptop for Excel

$

Best laptop for Solidworks

$

Best laptop for Roblox

$

Best computer for crypto mining

$

Best laptop for Sims 4

$

Latest questions

NUMPYNUMPY

psycopg2: insert multiple rows with one query

12 answers

NUMPYNUMPY

How to convert Nonetype to int or string?

12 answers

NUMPYNUMPY

How to specify multiple return types using type-hints

12 answers

NUMPYNUMPY

Javascript Error: IPython is not defined in JupyterLab

12 answers

News


Wiki

Python OpenCV | cv2.putText () method

numpy.arctan2 () in Python

Python | os.path.realpath () method

Python OpenCV | cv2.circle () method

Python OpenCV cv2.cvtColor () method

Python - Move item to the end of the list

time.perf_counter () function in Python

Check if one list is a subset of another in Python

Python os.path.join () method