logo

Python – Importer modul fra en annen katalog

Mens vi jobber med store prosjekter kan vi møte en situasjon der vi ønsker å importere en modul fra en annen katalog. Men av en eller annen grunn kan det hende at modulen ikke importeres riktig. Ikke bekymre deg hvis modulen din ikke er riktig importert. I denne artikkelen vil vi diskutere måter å importere en modul fra en annen katalog.

Merk: En modul er bare et Python-program som slutter med .py utvidelse og en mappe som inneholder en modul blir en pakke.



Katalogstruktur:

 - Folder_1 - main.py - Folder_2 - module1.py>

La oss anta at for å importere hvordan du importerer fil i Python, har vi to forskjellige mapper, den ene inneholder main.py som er vår hoved Python-fil der vi ønsker å importere modul1 fra Folder_2.

Modul 1: inneholder to funksjoner kalt add og odd_even. Funksjonen add tar to argumenter og returnerer tillegget av dem. Odd_even-funksjonen tar bare én argument og skriv ut selv om tallet er partall eller skriv ut Odd hvis tallet er oddetall.



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 bare prøver å importere modul 1 fra Mappe_2, vi vil støte på følgende feil.

main.py

Python3




# importing module1 from another folder> import> Folder_2> # calling odd_even function> module1.odd_even(>5>)>

onclick javascript

>

>

Produksjon:

Feil

ModuleNotFoundError , fordi Python-tolker som standard kun vil se etter filen i gjeldende katalog, og vi må angi filbanen manuelt for å importere modulene fra en annen katalog. Vi kan gjøre dette på forskjellige måter. Disse måtene diskuteres i detalj nedenfor.

Metode 1: Importer modul fra en annen katalog ved å bruke sys-modulen

Vi kan bruke sys.path å legge til banen til den nye forskjellige mappen (mappen der vi vil importere modulene) til systembanen slik at Python også kan se etter modulen i den katalogen hvis den ikke finner modulen i den nåværende katalogen. Som sys.path faller inn under listetype klasse så vi kan enkelt bruke innsettingsmetoden for å legge til mappebanen.

Python3




konvertere fra char til int java
# 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>))>

>

>

Produksjon :

Bruker sys

Metode 2: Bruke PYTHONPATH miljøvariabel

På samme måte, hvis du ikke vil bruke sys modul for å angi banen til den nye katalogen. Du kan tilordne en katalogbane til PYTHONPATH-variabelen og fortsatt få programmet til å fungere.

I Linux , kan vi bruke følgende kommando i terminalen for å angi banen:

eksport PYTHONPATH='bane/til/katalog'

I Windows-systemet:

SET PYTHONPATH=bane/til/katalog

For å se om PYTHONPATH-variabelen inneholder banen til den nye mappen, kan vi bruke 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>))>

>

>

Produksjon:

Bruker PYTHONPATH

Anta at vi har en katalogstruktur som denne:

- project - Folder_1 - main.py - Folder_2 - subfolder - new.py>

Nå vil du importere new.py modul fra Mappe_2 til prosjektets mappe_1 main.py fil.

Syntaks:

fra prosjekt.mappe.undermappe.filnavn importer funksjonsnavn

Python3

program i java




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

>

>

Produksjon:

Produksjon