Python – Importuj moduł z innego katalogu

Python – Importuj moduł z innego katalogu

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.

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

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