logo

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.

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