logo

Python — importējiet no vecākdirektorija

Šajā rakstā mēs uzzināsim, kā importēt moduli no vecākdirektorija. No Python 3.3 nav atļauts atsaukties uz moduli vai to importēt vecākdirektorijā. No tālāk redzamā piemēra to varat skaidri saprast.

Vecāku direktorijā mums ir apakšdirektorijs, fails geeks.py, un apakšdirektorijā ir python fails ar nosaukumu temp.py. Tagad mēģināsim importēt geeks moduli vecākdirektorijā no faila temp.py apakšdirektorijā.



geeks.py (modulis vecākdirektorijā)

Python3




pelēks kods





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

>

>

temp.py (python fails apakšdirektorijā)

Python3




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

>

>

Kā mēs jau iepriekš apspriedām, moduli nav iespējams importēt no vecākdirektorija, tāpēc rodas šāda kļūda.

Traceback (pēdējais zvans):

Fails C:/Users/sai mohan pulamolu/Desktop/parentdirectory/subdirectory/temp.py, 2. rinda, in

no mātesdirektorija importa geeks

ModuleNotFoundError: nav moduļa ar nosaukumu “parentdirectory”

Tagad uzzināsim, kā importēt moduli no vecāku direktorijs:

cast in sql

Lai importētu moduli, PYTHONPATH ir jāatrodas direktorijam, kurā ir šis modulis. Tas ir vides mainīgais, kas satur to pakotņu sarakstu, kuras ielādēs Python. Pakešu saraksts PYTHONPATH ir pieejams arī sys.path, tāpēc vecākdirektorija ceļš tiks pievienots sys.path.

Savā darbā mēs izmantojam trīs dažādas pieejas, kas ir izskaidrotas tālāk ar piemēru palīdzību.

1. metode: importējiet no vecākdirektorija, izmantojot metodi sys.path

Šeit mēs izmantosim sys moduli un iestatīsim ceļu tieši uz vajadzīgo moduli.

Pievienojiet vecākdirektoriju mapei sys.path izmantojot pievienot () metodi . Tā ir iebūvēta sys moduļa funkcija, ko var izmantot ar ceļa mainīgo, lai pievienotu noteiktu ceļu tulku meklēšanai. Nākamais piemērs parāda, kā to var izdarīt.

Python3


primitīvie datu tipi java



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

>

>

Izvade:

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

2. metode: importējiet no vecākdirektorija, izmantojot os.path.abspath() metode

Šeit mēs izmantosim sys moduli, kā arī ceļa moduli direktorija iegūšanai un iestatīsim ceļu tieši uz vajadzīgo moduli.

Sintakse: os.path.abspath(ceļš)

Parametrs:
Ceļš: Ceļam līdzīgs objekts, kas attēlo failu sistēmas ceļu.

Atgriešanas veids: Šī metode atgriež normalizētu ceļa nosaukuma ceļa versiju.

Vispirms mēs iegūsim tā direktorija nosaukumu, kurā temp.py fails pašlaik izmanto ceļu.path(__file__). abspath (), otrkārt, pievienojiet direktoriju sys.path .pievienot, lai pārbaudītu, mēs izmantosim tā metodi.

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

>

alfabēts uz cipariem
>

Izvade:

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

3. metode: importējiet no vecākdirektorija, izmantojot os.path.dirname metodi

Šeit mēs izmantosim sys moduli, kā arī OS moduli, lai iegūtu direktoriju (pašreizējo, kā arī vecāku) un iestatīsim ceļu tieši uz vajadzīgo moduli.

Sintakse: os.path.dirname(ceļš)

Parametrs:
ceļš : ceļam līdzīgs objekts, kas attēlo failu sistēmas ceļu.

Atgriešanas veids: Šī metode atgriež virknes vērtību, kas apzīmē direktorija nosaukumu no norādītā ceļa.

Pirmkārt, mēs iegūsim pašreizējo direktoriju, izmantojot os.path.dirname (os.path.realpath(__file__)), otrkārt, mēs iegūsim vecākdirektoriju, izmantojot os.path.dirname(), visbeidzot, pievienosim vecāku direktoriju. direktoriju uz sys.path lai pārbaudītu, izmantosim tā metodi.

Python3

funkcijas c




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

>

>

Izvade: