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:
