logo

Python – Importera modul från annan katalog

När vi arbetar med stora projekt kan vi möta en situation där vi vill importera en modul från en annan katalog. Men av någon anledning kanske modulen inte importeras korrekt. Oroa dig nu inte om din modul inte importeras korrekt. I den här artikeln kommer vi att diskutera sätt att importera en modul från en annan katalog.

Notera: En modul är bara ett Python-program som slutar med .py tillägg och en mapp som innehåller en modul blir ett paket.



Katalogstruktur:

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

Låt oss anta att för att importera hur man importerar fil i Python har vi två olika mappar, en innehåller main.py som är vår huvudsakliga Python-fil där vi vill importera modul1 från Folder_2.

Modul 1: innehåller två funktioner som kallas add och odd_even. Funktionen add will tar två argument och returnerar tillägget av dem. Funktionen odd_even tar bara en argument och skriv ut även om talet är jämnt eller skriv udda om talet är udda.



module1.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'>)>

faktoriell java
>

>

Om vi ​​bara försöker importera modul1 från Folder_2, vi kommer att stöta på följande fel.

main.py

Python3




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

>

>

Produktion:

Fel

göra skriptet körbart

ModuleNotFoundError , eftersom Python-tolkaren som standard endast söker efter filen i den aktuella katalogen, och vi måste ställa in sökvägen manuellt för att importera modulerna från en annan katalog. Vi kan göra detta på olika sätt. Dessa sätt diskuteras i detalj nedan.

Metod 1: Importera modul från en annan katalog med hjälp av sys-modulen

Vi kan använda sys.path för att lägga till sökvägen till den nya olika mappen (mappen varifrån vi vill importera modulerna) till systemsökvägen så att Python också kan leta efter modulen i den katalogen om den inte hittar modulen i sin nuvarande katalog. Som sys.path faller under listtypklass så vi kan enkelt använda infogningsmetoden för att lägga till mappsökvägen.

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 :

Använder sys

Metod 2: Använd PYTHONPATH miljöfaktor

På samma sätt, om du inte vill använda sys modul för att ställa in sökvägen till den nya katalogen. Du kan tilldela en katalogsökväg till variabeln PYTHONPATH och fortfarande få ditt program att fungera.

java annat

I Linux , kan vi använda följande kommando i terminalen för att ställa in sökvägen:

export PYTHONPATH='sökväg/till/katalog'

I Windows-systemet:

tar bort sista commit git

SET PYTHONPATH=sökväg/till/katalog

För att se om variabeln PYTHONPATH innehåller sökvägen till den nya mappen kan vi använda följande kommando:

eko $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:

Använder PYTHONPATH

Anta att vi har en katalogstruktur så här:

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

Nu vill du importera new.py modul från Mapp_2 till vårt projekts mapp_1 main.py fil.

Syntax:

från project.folder.subfolder.filename import funktionsnamn

hur man gör om i photoshop

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