Mens vi arbejder på store projekter, kan vi konfrontere en situation, hvor vi ønsker at importere en modul fra en anden mappe. Men af en eller anden grund er modulet muligvis ikke importeret korrekt. Nu skal du ikke bekymre dig, hvis dit modul ikke er importeret korrekt. I denne artikel vil vi diskutere måder at importere et modul fra en anden mappe.
Bemærk: Et modul er blot et Python-program, der slutter med .py udvidelse og en mappe, der indeholder et modul, bliver en pakke.
Katalogstruktur:
- Folder_1 - main.py - Folder_2 - module1.py>
Lad os antage, at for at importere, hvordan man importerer fil i Python, har vi to forskellige mapper, den ene indeholder main.py, som er vores primære Python-fil, hvor vi vil importere modul1 fra Folder_2.
Modul 1: indeholder to funktioner kaldet add og odd_even. Funktionen tilføje tager to argumenter og returnerer tilføjelsen af dem. Funktionen ulige_lige tager kun én argument og udskriv selv hvis tallet er lige eller udskriv ulige hvis tallet er ulige.
modul1.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'>)> |
>
>
Hvis vi blot prøver at importere modul 1 fra Mappe_2, vi støder på følgende fejl.
main.py
Python3
# importing module1 from another folder> import> Folder_2> # calling odd_even function> module1.odd_even(>5>)> |
java design mønstre
>
>
Produktion:

Fejl
ModuleNotFoundError , fordi Python-fortolkeren som standard kun vil søge efter filen i den aktuelle mappe, og vi skal indstille filstien manuelt for at importere modulerne fra en anden mappe. Det kan vi gøre på forskellige måder. Disse måder diskuteres i detaljer nedenfor.
Metode 1: Importer modul fra en anden mappe ved hjælp af sys-modulet
Vi kan bruge sys.sti at tilføje stien til den nye anderledes mappe (mappen hvorfra vi vil importere modulerne) til systemstien, så Python også kan lede efter modulet i den mappe, hvis den ikke finder modulet i dens nuværende mappe. Som sys.sti falder ind under listetype klasse så vi kan nemt bruge indsæt-metoden til at tilføje mappestien.
Python3
iskcon fuld formular
# 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>))> |
>
>
Produktion :

Bruger sys
Metode 2: Brug af PYTHONPATH miljøvariabel
Tilsvarende, hvis du ikke ønsker at bruge sys modul for at indstille stien til den nye mappe. Du kan tildele en mappesti til PYTHONPATH-variablen og stadig få dit program til at fungere.
I Linux , kan vi bruge følgende kommando i terminalen til at indstille stien:
eksport PYTHONPATH='sti/til/katalog'
I Windows-systemet:
SET PYTHONPATH=sti/til/mappe
For at se om PYTHONPATH-variablen indeholder stien til den nye mappe, kan vi bruge følgende kommando:
ekko $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>))> |
>
>
Produktion:

Bruger PYTHONPATH
Antag, at vi har en mappestruktur som denne:
- project - Folder_1 - main.py - Folder_2 - subfolder - new.py>
Nu vil du importere new.py modul fra Mappe_2 til vores projekts mappe_1 main.py fil.
Syntaks:
fra projekt.mappe.undermappe.filnavn importer funktionsnavn
Python3
tiger løve forskel
# 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()> |
>
>
Produktion:

Produktion