logo

Python – uvoz iz nadrejenega imenika

V tem članku se bomo naučili, kako uvoziti modul iz nadrejenega imenika. Od Pythona 3.3 sklicevanje ali uvažanje modula v nadrejeni imenik ni dovoljeno. Iz spodnjega primera lahko to jasno razumete.

V nadrejenem imeniku imamo podimenik, datoteko geeks.py, v podimeniku pa datoteko python z imenom temp.py. Zdaj pa poskusimo, ali lahko uvozimo modul geeks v nadrejeni imenik iz datoteke temp.py v podimenik.



geeks.py (modul v nadrejenem imeniku)

Python3




čajna žlička proti jedilni žlici





def> geek_method():> >print>(>'This method in geeks module.......bye'>)>

>

>

temp.py (datoteka python v podimeniku)

Python3

nullpointerexception




# importing the module in> # parent directory> from> parentdirectory>import> geeks> # calling the func1() method> # from geeks module> geeks.geek_method()>

>

>

Kot smo že omenili, ni mogoče uvoziti modula iz nadrejenega imenika, zato to vodi do napake, podobne tej.

Traceback (zadnji zadnji klic):

Datoteka C:/Users/sai mohan pulamolu/Desktop/parentdirectory/subdirectory/temp.py, vrstica 2, v

iz parentdirectory uvoz geekov

ModuleNotFoundError: Ni modula z imenom »parentdirectory«

Zdaj pa se naučimo, kako uvoziti modul iz nadrejeni imenik:

Če želite uvoziti modul, mora biti imenik s tem modulom prisoten na PYTHONPATH. Je spremenljivka okolja, ki vsebuje seznam paketov, ki jih bo naložil Python. Seznam paketov v PYTHONPATH je prisoten tudi v sys.path, zato bo pot nadrejenega imenika dodana v sys.path.

Pri svojem delu uporabljamo tri različne pristope, ki so v nadaljevanju razloženi s pomočjo primerov.

1. način: uvozite iz nadrejenega imenika z metodo sys.path

Tukaj bomo uporabili modul sys in nastavili pot neposredno do zahtevanega modula.

Dodajte nadrejeni imenik v sys.path uporabljati pripni() metoda . To je vgrajena funkcija modula sys, ki jo je mogoče uporabiti s spremenljivko poti za dodajanje določene poti za iskanje tolmačev. Naslednji primer prikazuje, kako je to mogoče storiti.

Python3


primer podatkov json



import> sys> # setting path> sys.path.append(>'../parentdirectory'>)> # importing> from> parentdirectory.geeks>import> geek_method> # using> geek_method()>

>

>

Izhod:

This method in geeks module.......bye>

2. način: uvozite iz nadrejenega imenika z uporabo metoda os.path.abspath().

Tukaj bomo uporabili modul sys kot tudi modul poti za pridobivanje imenika in nastavili pot neposredno do zahtevanega modula.

Sintaksa: os.path.abspath(pot)

Parameter:
Pot: Poti podoben objekt, ki predstavlja pot datotečnega sistema.

Vrsta vračila: Ta metoda vrne normalizirano različico poti imena poti.

Najprej bomo dobili ime imenika, kjer je datoteka temp.py trenutno z uporabo path.path(__file__). abspath(), drugič dodajte imenik v sys.path .append za preverjanje, bomo uporabili njegovo metodo.

kdaj je bila izumljena šola

Python3




import> path> import> sys> # directory reach> directory>=> path.path(__file__).abspath()> # setting path> sys.path.append(directory.parent.parent)> # importing> from> parentdirectory.geeks>import> geek_method> # using> geek_method()>

>

>

Izhod:

 This method in geeks module.......bye>

3. način: uvozite iz nadrejenega imenika z uporabo os.path.dirname metoda

Tukaj bomo uporabili modul sys in modul os za pridobivanje imenika (trenutnega in nadrejenega) in nastavili pot neposredno do zahtevanega modula.

Sintaksa: os.path.dirname(pot)

Parameter:
pot : Poti podoben objekt, ki predstavlja pot datotečnega sistema.

Vrsta vračila: Ta metoda vrne vrednost niza, ki predstavlja ime imenika iz navedene poti.

Prvič, trenutni imenik bomo dobili z uporabo os.path.dirname (os.path.realpath(__file__)), drugič, nadrejeni imenik bomo dobili z uporabo os.path.dirname(), nazadnje dodamo nadrejenega imenik v sys.path za preverjanje bomo uporabili njegovo metodo.

Python3




import> sys> import> os> # getting the name of the directory> # where the this file is present.> current>=> os.path.dirname(os.path.realpath(__file__))> # Getting the parent directory name> # where the current directory is present.> parent>=> os.path.dirname(current)> # adding the parent directory to> # the sys.path.> sys.path.append(parent)> # now we can import the module in the parent> # directory.> import> geeks> geeks.geek_method()>

hadoop vadnica
>

>

Izhod: