I denne artikkelen vil vi lære hvordan du importerer en modul fra den overordnede katalogen. Fra Python 3.3 er det ikke tillatt å referere eller importere en modul i den overordnede katalogen. Fra eksemplet nedenfor kan du tydelig forstå dette.
I den overordnede katalogen har vi en underkatalog, geeks.py-filen, og i underkatalogen har vi en python-fil som heter temp.py. La oss nå prøve om vi kan importere geeks-modulen i den overordnede katalogen fra temp.py-filen i underkatalogen.
geeks.py (modul i overordnet katalog)
Python3
streng java indexof
def> geek_method():> >print>(>'This method in geeks module.......bye'>)> |
>
>
temp.py (python-fil i underkatalog)
Python3
strengbygger
# importing the module in> # parent directory> from> parentdirectory>import> geeks> # calling the func1() method> # from geeks module> geeks.geek_method()> |
>
>
Som vi har diskutert tidligere er det ikke mulig å importere en modul fra overordnet katalog, så dette fører til en feil som dette.
Sporing (siste anrop sist):
Fil C:/Users/sai mohan pulamolu/Desktop/parentdirectory/subdirectory/temp.py, linje 2, i
fra parentdirectory import nerder
ModuleNotFoundError: Ingen modul kalt 'parentdirectory'
La oss nå lære hvordan du importerer en modul fra overordnet katalog:
For å importere en modul, må katalogen som har den modulen være til stede på PYTHONPATH. Det er en miljøvariabel som inneholder listen over pakker som vil bli lastet av Python. Listen over pakker som finnes i PYTHONPATH er også til stede i sys.path, så vil legge til den overordnede katalogbanen til sys.path.
For vårt arbeid bruker vi tre ulike tilnærminger som er forklart nedenfor ved hjelp av eksempler.
Metode 1: Importer fra overordnet katalog med sys.path-metoden
Her vil vi bruke sys-modulen og sette banen direkte til den nødvendige modulen.
Legg til overordnet katalog til sys.path bruker legge til() metode . Det er en innebygd funksjon i sys-modulen som kan brukes med en banevariabel for å legge til en spesifikk sti for tolker å søke. Følgende eksempel viser hvordan dette kan gjøres.
Python3
filtrerende python
import> sys> # setting path> sys.path.append(>'../parentdirectory'>)> # importing> from> parentdirectory.geeks>import> geek_method> # using> geek_method()> |
>
>
Produksjon:
This method in geeks module.......bye>
Metode 2: Importer fra overordnet katalog med os.path.abspath()-metoden
Her vil vi bruke sys-modulen samt banemodulen for å hente katalogen og sette banen direkte til den nødvendige modulen.
Syntaks: os.path.abspath(bane)
Parameter:
Sti: Et banelignende objekt som representerer en filsystembane.Returtype: Denne metoden returnerer en normalisert versjon av banenavnet.
Først vil vi få navnet på katalogen der temp.py-filen for øyeblikket bruker path.path(__file__). abspath(), for det andre legg til katalogen til sys.path .legg til sjekk, vil vi bruke metoden.
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()> |
rajesh khanna
>
>
Produksjon:
This method in geeks module.......bye>
Metode 3: Importer fra overordnet katalog med os.path.dirname metode
Her vil vi bruke sys-modulen så vel som os-modulen for å hente katalogen (nåværende så vel som en forelder) og sette banen direkte til den nødvendige modulen.
Syntaks: os.bane.dirnavn(bane)
Parameter:
sti : Et banelignende objekt som representerer en filsystembane.Returtype: Denne metoden returnerer en strengverdi som representerer katalognavnet fra den angitte banen.
For det første vil vi få den gjeldende katalogen ved å bruke os.path.dirname (os.path.realpath(__file__)), for det andre vil vi få den overordnede katalogen ved å bruke os.path.dirname(), til slutt, legg til overordnet katalogen til sys.path for å sjekke, vil vi bruke metoden.
diskret matematikk negasjon
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()> |
>
>
Produksjon:
