logo

Python – Import z nadradeného adresára

V tomto článku sa naučíme, ako importovať modul z nadradeného adresára. Od Pythonu 3.3 nie je povolené odkazovanie alebo importovanie modulu do nadradeného adresára. Z nižšie uvedeného príkladu to môžete jasne pochopiť.

V nadradenom adresári máme podadresár, súbor geeks.py a v podadresári máme súbor python s názvom temp.py. Teraz skúsme, či môžeme importovať modul geeks v nadradenom adresári zo súboru temp.py v podadresár.



geeks.py (modul v nadradenom adresári)

Python3




návod na pyspark





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

>

>

temp.py (súbor python v podadresári)

Python3




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

>

>

Ako sme už diskutovali, nie je možné importovať modul z nadradeného adresára, takže to vedie k chybe, ktorá je podobná tejto.

Spätné sledovanie (posledný hovor ako posledný):

Súbor C:/Users/sai mohan pulamolu/Desktop/parentdirectory/subdirectory/temp.py, riadok 2, v

z geekov importu parentdirectory

ModuleNotFoundError: Žiadny modul s názvom „rodičovský adresár“

Teraz sa naučíme, ako importovať modul z nadradený adresár:

Aby bolo možné importovať modul, adresár s týmto modulom musí byť prítomný na PYTHONPATH. Je to premenná prostredia, ktorá obsahuje zoznam balíkov, ktoré načíta Python. Zoznam balíkov prítomných v PYTHONPATH je tiež prítomný v sys.path, takže pridá cestu k rodičovskému adresáru do sys.path.

Pre našu prácu používame tri rôzne prístupy, ktoré sú vysvetlené nižšie pomocou príkladov.

Metóda 1: Import z nadradeného adresára pomocou metódy sys.path

Tu použijeme modul sys a nastavíme cestu priamo k požadovanému modulu.

Pridajte nadradený adresár do sys.path pomocou pripojiť () metóda . Je to vstavaná funkcia modulu sys, ktorú možno použiť s premennou path na pridanie špecifickej cesty pre tlmočníkov na vyhľadávanie. Nasledujúci príklad ukazuje, ako sa to dá urobiť.

Python3


rovnosť reťazcov v jave



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

>

>

Výkon:

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

Metóda 2: Import z nadradeného adresára pomocou metóda os.path.abspath().

Tu použijeme modul sys aj modul path na získanie adresára a nastavíme cestu priamo k požadovanému modulu.

Syntax: os.path.abspath(cesta)

Parameter:
cesta: Objekt podobný ceste predstavujúci cestu súborového systému.

Typ návratu: Táto metóda vráti normalizovanú verziu cesty k názvu cesty.

Najprv získame názov adresára, v ktorom sa momentálne nachádza súbor temp.py pomocou cesty path.path(__file__). abspath(), po druhé pridajte adresár do sys.path .pridať na kontrolu, použijeme jeho metódu.

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

greibach normálna forma
>

>

Výkon:

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

Metóda 3: Import z nadradeného adresára pomocou os.path.dirname metóda

Tu použijeme modul sys aj modul os na získanie adresára (aktuálneho aj nadradeného) a nastavíme cestu priamo k požadovanému modulu.

Syntax: os.path.dirname(cesta)

Parameter:
cesta : Objekt podobný ceste predstavujúci cestu súborového systému.

Typ návratu: Táto metóda vráti hodnotu reťazca, ktorá predstavuje názov adresára zo zadanej cesty.

Po prvé, získame aktuálny adresár pomocou os.path.dirname (os.path.realpath(__file__)), po druhé, získame nadradený adresár pomocou os.path.dirname(), nakoniec pridáme nadradený adresár adresára do sys.path na kontrolu použijeme jeho metódu.

javascriptové výstražné pole

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

>

>

Výkon: