En travaillant sur de grands projets, nous pouvons être confrontés à une situation dans laquelle nous souhaitons importer un module à partir d'un autre répertoire. Mais pour une raison quelconque, le module peut ne pas être importé correctement. Ne vous inquiétez plus si votre module n’est pas importé correctement. Dans cet article, nous aborderons les moyens d'importer un module depuis un autre répertoire.
Note: Un module est juste un programme Python qui se termine par .py extension et un dossier contenant un module devient un package.
Structure du répertoire :
- Folder_1 - main.py - Folder_2 - module1.py>
Supposons que, pour importer comment importer un fichier en Python, nous ayons deux dossiers différents, l'un contient main.py qui est notre fichier Python principal dans lequel nous voulons importer module1 à partir du dossier_2.
Module 1: contient deux fonctions appelées add et odd_even. La fonction add prendra deux arguments et renverra leur addition. La fonction odd_even ne prendra qu'un seul argument et imprimez Même si le nombre est pair ou imprimez Impair si le nombre est impair.
module1.py
Python3
# creating a simple add function> def> add(a, b):> >return> a>+>b> # creating a simple odd_even function> # to check if the number is odd or even> def> odd_even(n):> >if> n>%> 2> =>=> 0>:> >print>(>'Even'>)> >else>:> >print>(>'Odd'>)> |
>
>
Si nous essayons simplement d'importer module 1 depuis Dossier_2, nous rencontrerons l’erreur suivante.
couches de modèle osi
main.py
Python3
# importing module1 from another folder> import> Folder_2> # calling odd_even function> module1.odd_even(>5>)> |
>
>
Sortir:

Erreur
ModuleNotFoundError , car par défaut, l'interpréteur Python recherchera le fichier dans le répertoire actuel uniquement et nous devons définir manuellement le chemin du fichier pour importer les modules depuis un autre répertoire. Nous pouvons le faire de différentes manières. Ces méthodes sont discutées ci-dessous en détail.
Méthode 1 : importer le module depuis un répertoire différent à l'aide du module sys
On peut utiliser chemin système pour ajouter le chemin du nouveau dossier différent (le dossier à partir duquel nous voulons importer les modules) au chemin du système afin que Python puisse également rechercher le module dans ce répertoire s'il ne trouve pas le module dans son répertoire actuel. Comme chemin système relève du classe de type liste nous pouvons donc facilement utiliser la méthode d'insertion pour ajouter le chemin du dossier.
Python3
# importing sys> from> module1>import> odd_even, add> import> sys> # adding Folder_2 to the system path> sys.path.insert(>0>,>'/home/amninder/Desktop/Folder_2'>)> # importing the add and odd_even> # function> # calling odd_even function> odd_even(>5>)> # calling add function> print>(>'Addition of two number is :'>, add(>2>,>2>))> |
>
>
Sortir :

Utilisation du système
Méthode 2 : Utiliser PYTHONPATH variable d'environnement
De même, si vous ne souhaitez pas utiliser le système module pour définir le chemin du nouveau répertoire. Vous pouvez attribuer un chemin de répertoire à la variable PYTHONPATH tout en continuant à faire fonctionner votre programme.
Dans Linux , nous pouvons utiliser la commande suivante dans le terminal pour définir le chemin :
export PYTHONPATH='chemin/vers/répertoire'
Dans le système Windows :
SET PYTHONPATH=chemin/vers/répertoire
troisième forme normale
Pour voir si la variable PYTHONPATH contient le chemin du nouveau dossier, on peut utiliser la commande suivante :
écho $PYTHONPATH
Python3
# importing the add and odd_even function> from> module1>import> odd_even, add> # calling odd_even function> odd_even(>5>)> # calling add function> print>(>'Addition of two number is :'>, add(>2>,>2>))> |
>
>
Sortir:

Utiliser PYTHONPATH
Supposons que nous ayons une structure de répertoires comme celle-ci :
- project - Folder_1 - main.py - Folder_2 - subfolder - new.py>
Maintenant, vous souhaitez importer le nouveau.py module de Dossier_2 au dossier_1 de notre projet main.py déposer.
Syntaxe:
à partir de project.folder.subfolder.filename importer le nom de la fonction
Python3
# importing sys> import> sys> # adding Folder_2/subfolder to the system path> sys.path.insert(>0>,>'/home/amninder/Desktop/project/Folder_2/subfolder'>)> # importing the hello> from> new>import> hello> # calling hello function> hello()> |
>
>
Sortir:

Sortir