Terwijl we aan grote projecten werken, kunnen we geconfronteerd worden met een situatie waarin we een module vanuit een andere map. Maar om de een of andere reden wordt de module mogelijk niet correct geïmporteerd. Maak u nu geen zorgen als uw module niet correct wordt geïmporteerd. In dit artikel bespreken we manieren om een module uit een andere map te importeren.
Opmerking: Een module is slechts een Python-programma dat eindigt op .py extensie en een map die een module bevat, wordt een pakket.
Directorystructuur:
- Folder_1 - main.py - Folder_2 - module1.py>
Laten we veronderstellen dat we, om te importeren hoe we een bestand in Python kunnen importeren, twee verschillende mappen hebben, één bevat main.py, wat ons hoofd Python-bestand is waarin we module1 uit Map_2 willen importeren.
Module 1: bevat twee functies genaamd add en odd_even. De functie add will neemt twee argumenten en retourneert de optelling ervan. De oneven_even functie heeft er maar één nodig argument en print Even als het getal even is of print Oneven als het getal oneven is.
module1.py
Python3
wat is het internet
# 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'>)> |
>
>
Als we gewoon proberen te importeren module 1 van Map_2, we zullen de volgende fout tegenkomen.
hoofd.py
Python3
volledige vorm van i d e
# importing module1 from another folder> import> Folder_2> # calling odd_even function> module1.odd_even(>5>)> |
>
>
Uitgang:

Fout
ModuleNotFoundFout , omdat de Python-interpreter standaard alleen naar het bestand in de huidige map zal zoeken, en we het bestandspad handmatig moeten instellen om de modules uit een andere map te importeren. Dit kunnen wij op verschillende manieren doen. Deze manieren worden hieronder in detail besproken.
Methode 1: Module uit een andere map importeren met behulp van de sys-module
We kunnen gebruiken sys.pad om het pad van de nieuwe andere map (de map van waaruit we de modules willen importeren) toe te voegen aan het systeempad, zodat Python ook naar de module in die map kan zoeken als hij de module niet in de huidige map kan vinden. Als sys.pad valt onder de lijsttype klasse dus we kunnen eenvoudig de invoegmethode gebruiken om het mappad toe te voegen.
Python3
numpige nullen
# 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>))> |
>
>
Uitvoer :

Met behulp van sys
Methode 2: PYTHONPATH gebruiken omgevingsvariabele
Op dezelfde manier, als u de sys module om het pad van de nieuwe map in te stellen. U kunt een directorypad aan de PYTHONPATH-variabele toewijzen en uw programma toch werkend krijgen.
In Linux , kunnen we de volgende opdracht in de terminal gebruiken om het pad in te stellen:
export PYTHONPATH=’pad/naar/map’
In het Windows-systeem:
SET PYTHONPATH=pad/naar/map
Om te zien of de PYTHONPATH-variabele het pad van de nieuwe map bevat, kunnen we de volgende opdracht gebruiken:
echo $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>))> |
>
.volgende Java
>
Uitgang:

PYTHONPATH gebruiken
knop om css te centreren
Stel dat we een directorystructuur als deze hebben:
- project - Folder_1 - main.py - Folder_2 - subfolder - new.py>
Nu wilt u het nieuw.py module van Map_2 naar de map_1 van ons project hoofd.py bestand.
Syntaxis:
van project.map.submap.bestandsnaam importeer functienaam
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()> |
>
>
Uitgang:

Uitvoer