Pracując nad dużymi projektami możemy spotkać się z sytuacją, w której będziemy chcieli zaimportować plik moduł z innego katalogu. Ale z jakiegoś powodu moduł może nie zostać poprawnie zaimportowany. Nie martw się teraz, jeśli Twój moduł nie został poprawnie zaimportowany. W tym artykule omówimy sposoby importowania modułu z innego katalogu.
Notatka: Moduł to po prostu program w języku Python, który kończy się na .py rozszerzenie, a folder zawierający moduł staje się pakietem.
Struktura katalogów:
- Folder_1 - main.py - Folder_2 - module1.py>
Załóżmy, że aby zaimportować plik w Pythonie, mamy dwa różne foldery, jeden zawiera main.py, który jest naszym głównym plikiem Pythona, do którego chcemy zaimportować moduł1 z Folderu_2.
Moduł 1: zawiera dwie funkcje zwane add i nieparzyste. Funkcja add przyjmuje dwa argumenty i zwraca ich dodanie. Funkcja odd_even zajmie tylko jedną argument i wydrukuj Nawet jeśli liczba jest parzysta lub wydrukuj Odd, jeśli liczba jest nieparzysta.
moduł1.py
Python3
# creating a simple add function> def> add(a, b):> >return> a>+>b> # creating a simple odd_even function> # to check if the number is odd or even> def> odd_even(n):> >if> n>%> 2> =>=> 0>:> >print>(>'Even'>)> >else>:> >print>(>'Odd'>)> |
>
>
Jeśli po prostu spróbujemy zaimportować moduł 1 z Folder_2, napotkamy następujący błąd.
sts pobierz
main.py
Python3
# importing module1 from another folder> import> Folder_2> # calling odd_even function> module1.odd_even(>5>)> |
>
>
Wyjście:

Błąd
Błąd modułu Nie znaleziono , ponieważ domyślnie interpreter Pythona będzie sprawdzał, czy plik znajduje się tylko w bieżącym katalogu i musimy ręcznie ustawić ścieżkę do pliku, aby zaimportować moduły z innego katalogu. Możemy to zrobić na różne sposoby. Sposoby te omówiono szczegółowo poniżej.
Metoda 1: Zaimportuj moduł z innego katalogu za pomocą modułu sys
Możemy użyć ścieżka sys aby dodać ścieżkę nowego innego folderu (folderu, z którego chcemy zaimportować moduły) do ścieżki systemowej, aby Python mógł również szukać modułu w tym katalogu, jeśli nie znajdzie modułu w swoim bieżącym katalogu. Jak ścieżka sys wpada pod klasa typu listy więc możemy łatwo użyć metody wstawiania, aby dodać ścieżkę do folderu.
Python3
# importing sys> from> module1>import> odd_even, add> import> sys> # adding Folder_2 to the system path> sys.path.insert(>0>,>'/home/amninder/Desktop/Folder_2'>)> # importing the add and odd_even> # function> # calling odd_even function> odd_even(>5>)> # calling add function> print>(>'Addition of two number is :'>, add(>2>,>2>))> |
>
>
Wyjście :

Korzystanie z sys
Metoda 2: Korzystanie z PYTHONPATH Zmienna środowiskowa
Podobnie, jeśli nie chcesz używać sys moduł, aby ustawić ścieżkę nowego katalogu. Możesz przypisać ścieżkę katalogu do zmiennej PYTHONPATH i nadal sprawić, by program działał.
W Linuksa , możemy użyć następującego polecenia w terminalu, aby ustawić ścieżkę:
eksportuj PYTHONPATH=’ścieżka/do/katalogu’
W systemie Windows:
SET PYTHONPATH=ścieżka/do/katalogu
formater ciągów
Aby sprawdzić, czy zmienna PYTHONPATH zawiera ścieżkę do nowego folderu, możemy użyć następującego polecenia:
Echo $PYTHONPATH
Python3
# importing the add and odd_even function> from> module1>import> odd_even, add> # calling odd_even function> odd_even(>5>)> # calling add function> print>(>'Addition of two number is :'>, add(>2>,>2>))> |
>
>
Wyjście:

Korzystanie z PYTHONPATH
Załóżmy, że mamy taką strukturę katalogów:
- project - Folder_1 - main.py - Folder_2 - subfolder - new.py>
Teraz chcesz zaimportować plik nowy.py moduł z Folder_2 do folderu naszego projektu_1 main.py plik.
Składnia:
z projektu.folderu.podfolderu.nazwa pliku nazwafunkcji importu
Python3
# importing sys> import> sys> # adding Folder_2/subfolder to the system path> sys.path.insert(>0>,>'/home/amninder/Desktop/project/Folder_2/subfolder'>)> # importing the hello> from> new>import> hello> # calling hello function> hello()> |
>
>
Wyjście:

Wyjście