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 iskconuod 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: