Python – Importer modul fra anden mappe

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> )>

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




# 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




# 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