logo

Python – Importuj z katalogu nadrzędnego

W tym artykule dowiemy się, jak zaimportować moduł z katalogu nadrzędnego. Od wersji Python 3.3 odwoływanie się do modułu w katalogu nadrzędnym lub importowanie go nie jest dozwolone. Z poniższego przykładu można to jasno zrozumieć.

W katalogu nadrzędnym mamy podkatalog plik geeks.py, a w podkatalogu mamy plik Pythona o nazwie temp.py. Teraz spróbujmy, czy uda nam się zaimportować moduł geeks do katalogu nadrzędnego z pliku temp.py w podkatalog.



geeks.py (moduł w katalogu nadrzędnym)

Python3




jak pobierać muzykę





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

>

>

temp.py (plik Pythona w podkatalogu)

Python3




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

>

>

Jak wspomnieliśmy wcześniej, nie jest możliwe zaimportowanie modułu z katalogu nadrzędnego, więc prowadzi to do błędu mniej więcej takiego.

Traceback (ostatnie połączenie ostatnie):

Plik C:/Users/sai mohan pulamolu/Desktop/parentdirectory/subdirectory/temp.py, linia 2, w

Pełna forma iskconu

od maniaków importu katalogu nadrzędnego

ModuleNotFoundError: Brak modułu o nazwie „katalog nadrzędny”

Teraz nauczmy się, jak zaimportować moduł z pliku nadrzędna Lokalizacja:

Aby zaimportować moduł, katalog zawierający ten moduł musi znajdować się w PYTHONPATH. Jest to zmienna środowiskowa zawierająca listę pakietów, które zostaną załadowane przez Pythona. Lista pakietów prezentowana w PYTHONPATH jest także obecna w sys.path, więc ścieżka do katalogu nadrzędnego zostanie dodana do ścieżka sys.

W naszej pracy stosujemy trzy różne podejścia, które wyjaśnimy poniżej na przykładach.

Metoda 1: Importuj z katalogu nadrzędnego przy użyciu metody sys.path

Tutaj użyjemy modułu sys i ustawimy ścieżkę bezpośrednio do wymaganego modułu.

Dodaj katalog nadrzędny do pliku ścieżka sys używając dodać() metoda . Jest to wbudowana funkcja modułu sys, której można używać ze zmienną ścieżki w celu dodania określonej ścieżki do przeszukiwania przez interpretery. Poniższy przykład pokazuje, jak można to zrobić.

Python3


najlepsze samochody na świecie



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

>

>

Wyjście:

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

Metoda 2: Importuj z katalogu nadrzędnego za pomocą metoda os.path.abspath().

Tutaj użyjemy modułu sys oraz modułu ścieżki do pobrania katalogu i ustawienia ścieżki bezpośrednio do wymaganego modułu.

Składnia: os.path.abspath(ścieżka)

Parametr:
Ścieżka: Obiekt podobny do ścieżki reprezentujący ścieżkę systemu plików.

Typ zwrotu: Ta metoda zwraca znormalizowaną wersję ścieżki ścieżki.

Najpierw otrzymamy nazwę katalogu, w którym aktualnie znajduje się plik temp.py, używając ścieżki path.path(__file__). abspath(), po drugie dodaj katalog do ścieżka sys .append do sprawdzenia, użyjemy jego metody.

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

Sridevi
>

>

Wyjście:

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

Metoda 3: Importuj z katalogu nadrzędnego za pomocą nazwa.ścieżki os.katalogu metoda

Tutaj użyjemy modułu sys oraz modułu os do pobrania katalogu (bieżącego i nadrzędnego) i ustawimy ścieżkę bezpośrednio do wymaganego modułu.

Składnia: os.path.dirname(ścieżka)

Parametr:
ścieżka : Obiekt podobny do ścieżki reprezentujący ścieżkę systemu plików.

Typ zwrotu: Ta metoda zwraca wartość ciągu reprezentującą nazwę katalogu z określonej ścieżki.

Po pierwsze uzyskamy katalog bieżący za pomocą os.path.dirname (os.path.realpath(__file__)), po drugie uzyskamy katalog nadrzędny za pomocą os.path.dirname(), na koniec dodamy katalog nadrzędny katalog do ścieżka sys aby to sprawdzić, użyjemy jego metody.

śpij dla javascript

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

>

>

Wyjście: