logo

Python – Importer modul fra anden mappe

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