logo

Python – Import z nadřazeného adresáře

V tomto článku se naučíme, jak importovat modul z nadřazeného adresáře. Od Pythonu 3.3 není povoleno odkazování nebo importování modulu do nadřazeného adresáře. Z níže uvedeného příkladu to jasně pochopíte.

V nadřazeném adresáři máme podadresář, soubor geeks.py a v podadresáři máme soubor python s názvem temp.py. Nyní zkusme, zda můžeme importovat modul geeks v nadřazeném adresáři ze souboru temp.py v podadresář.



geeks.py (modul v nadřazeném adresáři)

Python3




příklady operačních systémů





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

>

>

temp.py (soubor python v podadresáři)

Python3




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

>

>

Jak jsme diskutovali dříve, není možné importovat modul z nadřazeného adresáře, takže to vede k chybě podobné tomuto.

Traceback (poslední poslední hovor):

Soubor C:/Users/sai mohan pulamolu/Desktop/parentdirectory/subdirectory/temp.py, řádek 2, v

z geeků importu parentdirectory

ModuleNotFoundError: Žádný modul s názvem „parentdirectory“

Nyní se naučíme, jak importovat modul z nadřazený adresář:

smyčka java do while

Aby bylo možné importovat modul, adresář s tímto modulem musí být přítomen na PYTHONPATH. Je to proměnná prostředí, která obsahuje seznam balíčků, které Python načte. Seznam balíčků přítomných v PYTHONPATH je také přítomen v sys.path, takže přidá cestu nadřazeného adresáře do sys.path.

Pro naši práci používáme tři různé přístupy, které jsou níže vysvětleny pomocí příkladů.

Metoda 1: Import z nadřazeného adresáře pomocí metody sys.path

Zde použijeme modul sys a nastavíme cestu přímo k požadovanému modulu.

Přidejte nadřazený adresář do sys.path za použití připojit() metoda . Jedná se o vestavěnou funkci modulu sys, kterou lze použít s proměnnou path pro přidání specifické cesty pro tlumočníky k vyhledávání. Následující příklad ukazuje, jak to lze provést.

Python3


latexové seznamy



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

>

>

Výstup:

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

Metoda 2: Import z nadřazeného adresáře pomocí metoda os.path.abspath().

Zde použijeme modul sys i modul path pro získání adresáře a nastavíme cestu přímo k požadovanému modulu.

Syntax: os.path.abspath(cesta)

Parametr:
Cesta: Objekt podobný cestě představující cestu systému souborů.

Typ vrácení: Tato metoda vrací normalizovanou verzi cesty k názvu cesty.

Nejprve získáme název adresáře, kde se soubor temp.py aktuálně nachází, pomocí path.path(__file__). abspath(), za druhé přidejte adresář do sys.path .připojit ke kontrole, použijeme jeho metodu.

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

>

java break
>

Výstup:

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

Metoda 3: Import z nadřazeného adresáře pomocí os.path.dirname metoda

Zde použijeme modul sys i modul os pro získání adresáře (aktuálního i nadřazeného) a nastavíme cestu přímo k požadovanému modulu.

Syntax: os.path.dirname(cesta)

Parametr:
cesta : Objekt podobný cestě představující cestu systému souborů.

Typ vrácení: Tato metoda vrací řetězcovou hodnotu, která představuje název adresáře ze zadané cesty.

Za prvé získáme aktuální adresář pomocí os.path.dirname (os.path.realpath(__file__)), za druhé, získáme nadřazený adresář pomocí os.path.dirname(), nakonec přidáme nadřazený adresář adresář do sys.path pro kontrolu použijeme jeho metodu.

Python3

převést nfa na dfa




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ýstup: