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:
