logo

Python – Importera från överordnad katalog

I den här artikeln kommer vi att lära oss hur du importerar en modul från den överordnade katalogen. Från Python 3.3 är det inte tillåtet att referera eller importera en modul i den överordnade katalogen. Från exemplet nedan kan du tydligt förstå detta.

I den överordnade katalogen har vi en underkatalog, geeks.py-fil och i underkatalogen, har vi en python-fil som heter temp.py. Nu ska vi försöka om vi kan importera geeks-modulen i den överordnade katalogen från temp.py-filen i underkatalogen.



geeks.py (modul i den överordnade katalogen)

Python3




det är





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

>

>

temp.py (python-fil i underkatalog)

Python3




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

>

linux-kommandon skapa mapp
>

Som vi har diskuterat tidigare är det inte möjligt att importera en modul från den överordnade katalogen, så detta leder till ett fel ungefär så här.

Spårning (senaste samtalet senast):

Fil C:/Users/sai mohan pulamolu/Desktop/parentdirectory/subdirectory/temp.py, rad 2, i

från parentdirectory import nördar

ModuleNotFoundError: Ingen modul med namnet 'parentdirectory'

Låt oss nu lära oss hur man importerar en modul från överordnad katalog:

För att importera en modul måste katalogen som har den modulen finnas på PYTHONPATH. Det är en miljövariabel som innehåller listan över paket som kommer att laddas av Python. Listan över paket som finns i PYTHONPATH finns också i sys.path, så kommer att lägga till den överordnade katalogsökvägen till sys.path.

För vårt arbete använder vi tre olika tillvägagångssätt som förklaras nedan med hjälp av exempel.

Metod 1: Importera från överordnad katalog med sys.path-metoden

Här kommer vi att använda sys-modulen och ställa in sökvägen direkt till den önskade modulen.

Lägg till den överordnade katalogen till sys.path använda bifoga() metod . Det är en inbyggd funktion i sys-modulen som kan användas med en sökvägsvariabel för att lägga till en specifik sökväg för tolkar att söka. Följande exempel visar hur detta kan göras.

Python3


python generera uuid



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

>

>

Produktion:

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

Metod 2: Importera från överordnad katalog med os.path.abspath() metod

Här kommer vi att använda sys-modulen samt sökvägsmodulen för att hämta katalogen och ställa in sökvägen direkt till den önskade modulen.

Syntax: os.path.abspath(sökväg)

Parameter:
Väg: Ett sökvägsliknande objekt som representerar en filsystemsökväg.

Returtyp: Denna metod returnerar en normaliserad version av sökvägen för sökvägen.

Först kommer vi att få namnet på katalogen där temp.py-filen för närvarande använder path.path(__file__). abspath(), för det andra lägg till katalogen till sys.path .lägg till check kommer vi att använda dess metod.

array.från java

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

>

>

Produktion:

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

Metod 3: Importera från överordnad katalog med os.path.dirname metod

Här kommer vi att använda sys-modulen samt os-modulen för att hämta katalogen (nuvarande såväl som en förälder) och ställa in sökvägen direkt till den önskade modulen.

Syntax: os.path.dirname(path)

Parameter:
väg : Ett sökvägsliknande objekt som representerar en filsystemsökväg.

Returtyp: Denna metod returnerar ett strängvärde som representerar katalognamnet från den angivna sökvägen.

För det första kommer vi att få den aktuella katalogen genom att använda os.path.dirname (os.path.realpath(__file__)), för det andra kommer vi att få den överordnade katalogen genom att använda os.path.dirname(), slutligen, lägg till föräldern katalogen till sys.path för att kontrollera kommer vi att använda dess metod.

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

viloläge dialekt
>

>

Produktion: