În acest articol, vom afla cum să importam un modul din directorul părinte. Din Python 3.3, referirea sau importarea unui modul în directorul părinte nu este permisă, Din exemplul de mai jos puteți înțelege clar acest lucru.
În directorul părinte, avem un subdirector, fișierul geeks.py și în subdirector, avem un fișier python numit temp.py, Acum să încercăm dacă putem importa modulul geeks în directorul părinte din fișierul temp.py din subdirectorul.
geeks.py (modul în directorul părinte)
Python3
salut lumea cu java
def> geek_method():> >print>(>'This method in geeks module.......bye'>)> |
>
>
temp.py (fișier python în subdirector)
Python3
# importing the module in> # parent directory> from> parentdirectory>import> geeks> # calling the func1() method> # from geeks module> geeks.geek_method()> |
>
constructor python
>
După cum am discutat mai devreme, nu este posibil să importați un modul din directorul părinte, așa că aceasta duce la o eroare de genul acesta.
Traceback (cel mai recent apel ultimul):
Fișierul C:/Utilizatori/sai mohan pulamolu/Desktop/parentdirectory/subdirectory/temp.py, linia 2, în
de la parentdirectory import geeks
ModuleNotFoundError: Niciun modul numit „directory părinte”
Acum să învățăm cum să importam un modul din Directorul Parinte:
Pentru a importa un modul, directorul care are acel modul trebuie să fie prezent pe PYTHONPATH. Este o variabilă de mediu care conține lista de pachete care vor fi încărcate de Python. Lista pachetelor prezente în PYTHONPATH este prezentă și în sys.path, așa că va adăuga calea directorului părinte la sys.path.
Pentru munca noastră, folosim trei abordări diferite care sunt explicate mai jos cu ajutorul exemplelor.
Metoda 1: Importați din directorul părinte folosind metoda sys.path
Aici vom folosi modulul sys și vom seta calea direct către modulul necesar.
Adăugați directorul părinte la sys.path folosind adăuga() metodă . Este o funcție încorporată a modulului sys care poate fi utilizată cu o variabilă cale pentru a adăuga o cale specifică pentru căutarea interpreților. Următorul exemplu arată cum se poate face acest lucru.
Python3
print array în java
import> sys> # setting path> sys.path.append(>'../parentdirectory'>)> # importing> from> parentdirectory.geeks>import> geek_method> # using> geek_method()> |
>
>
Ieșire:
This method in geeks module.......bye>
Metoda 2: Import din directorul părinte folosind metoda os.path.abspath().
Aici vom folosi modulul sys, precum și modulul cale pentru a obține directorul și vom seta calea direct către modulul necesar.
Sintaxă: os.path.abspath(cale)
Parametru:
Cale: Un obiect asemănător unei căi care reprezintă o cale de sistem de fișiere.Tip returnare: Această metodă returnează o versiune normalizată a căii de cale.
În primul rând, vom obține numele directorului în care fișierul temp.py este în prezent folosind calea.path(__file__). abspath(), în al doilea rând adăugați directorul la sys.path .adăugați pentru a verifica, vom folosi metoda acesteia.
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()> |
>
cat de mare este monitorul meu
>
Ieșire:
This method in geeks module.......bye>
Metoda 3: Import din directorul părinte folosind os.path.dirname metodă
Aici vom folosi modulul sys, precum și modulul os pentru a obține directorul (actual, precum și un părinte) și vom stabili calea direct către modulul necesar.
Sintaxă: os.path.dirname(cale)
Parametru:
cale : Un obiect asemănător unei căi care reprezintă o cale de sistem de fișiere.Tip returnare: Această metodă returnează o valoare șir care reprezintă numele directorului din calea specificată.
În primul rând, vom obține directorul curent utilizând os.path.dirname (os.path.realpath(__file__)), în al doilea rând, vom obține directorul părinte folosind os.path.dirname(), în cele din urmă, adăugați părintele directorul către sys.path pentru a verifica, vom folosi metoda sa.
Python3
ce inseamna xdxd
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()> |
>
>
Ieșire:
