logo

Python – uvozi modul iz drugega imenika

Med delom na velikih projektih se lahko soočimo s situacijo, ko želimo uvoziti a modul iz drugega imenika. Toda iz nekega razloga modul morda ni pravilno uvožen. Ne skrbite, če vaš modul ni pravilno uvožen. V tem članku bomo razpravljali o načinih uvoza modula iz drugega imenika.

Opomba: Modul je samo program Python, ki se konča z .py razširitev in mapa, ki vsebuje modul, postane paket.



Struktura imenika:

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

Recimo, da imamo za uvoz kako uvoziti datoteko v Python dve različni mapi, ena vsebuje main.py, ki je naša glavna datoteka Python, kamor želimo uvoziti module1 iz mape_2.

Modul1: vsebuje dve funkciji, imenovani add in odd_even. Funkcija add vzame dva argumenta in vrne njun seštevek. Funkcija odd_even bo sprejela samo enega prepir in natisni Even, če je število sodo, ali natisni Odd, če je število liho.



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

>

>

Če preprosto poskušamo uvoziti modul1 od Mapa_2, naleteli bomo na naslednjo napako.

main.py

Python3




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

>

>

Izhod:

Napaka

ModuleNotFoundError , ker bo tolmač Python privzeto iskal datoteko samo v trenutnem imeniku, pot do datoteke pa moramo nastaviti ročno, da uvozimo module iz drugega imenika. To lahko storimo na različne načine. Ti načini so podrobno obravnavani spodaj.

1. način: Uvozite modul iz drugega imenika z uporabo modula sys

Lahko uporabimo sys.path da dodate pot nove druge mape (mape, iz katere želimo uvoziti module) sistemski poti, tako da lahko Python poišče modul tudi v tem imeniku, če modula ne najde v trenutnem imeniku. Kot sys.path spada pod razred vrste seznama tako lahko enostavno uporabimo metodo vstavljanja za dodajanje poti mape.

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

>

>

Izhod :

Uporaba sys

2. način: Uporaba PYTHONPATH spremenljivka okolja

Podobno, če ne želite uporabiti sys modul za nastavitev poti novega imenika. Spremenljivki PYTHONPATH lahko dodelite pot imenika in še vedno zagotovite, da vaš program deluje.

noter Linux , lahko za nastavitev poti uporabimo naslednji ukaz v terminalu:

izvoz PYTHONPATH='pot/do/imenika'

V sistemu Windows:

NASTAVITE PYTHONPATH=pot/do/imenika

Če želite videti, ali spremenljivka PYTHONPATH vsebuje pot nove mape, lahko uporabimo naslednji ukaz:

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

>

>

Izhod:

niz v celo število

Uporaba PYTHONPATH

Recimo, da imamo strukturo imenika, kot je ta:

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

Zdaj želite uvoziti novo.py modul iz Mapa_2 v mapo_1 našega projekta main.py mapa.

Sintaksa:

from project.folder.subfolder.filename import functionname

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

>

>

Izhod:

Izhod