Під час роботи над великими проектами ми можемо зіткнутися з ситуацією, коли хочемо імпортувати a модуль з іншого каталогу. Але з якоїсь причини модуль може бути імпортований неправильно. Тепер не хвилюйтеся, якщо ваш модуль імпортовано неправильно. У цій статті ми обговоримо способи імпорту модуля з іншого каталогу.
Примітка: Модуль — це просто програма Python, яка закінчується на .py розширення, і папка, яка містить модуль, стає пакетом.
Структура каталогу:
- Folder_1 - main.py - Folder_2 - module1.py>
Припустімо, щоб імпортувати як імпортувати файл у Python, у нас є дві різні папки, одна містить main.py, який є нашим головним файлом Python, куди ми хочемо імпортувати module1 з Folder_2.
Модуль 1: містить дві функції під назвою add і odd_even. Функція add приймає два аргументи та повертає їх додавання. Функція odd_even приймає лише один аргумент і вивести Even, якщо число парне, або вивести Odd, якщо число непарне.
module1.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'>)> |
>
>
Якщо ми просто спробуємо імпортувати модуль1 від Папка_2, ми зіткнемося з такою помилкою.
main.py
Python3
проходження замовлення поштою
# importing module1 from another folder> import> Folder_2> # calling odd_even function> module1.odd_even(>5>)> |
>
>
Вихід:

Помилка
ModuleNotFoundError , оскільки за замовчуванням інтерпретатор Python перевірятиме наявність файлу лише в поточному каталозі, і нам потрібно вручну встановити шлях до файлу, щоб імпортувати модулі з іншого каталогу. Ми можемо зробити це різними способами. Ці способи детально обговорюються нижче.
Спосіб 1. Імпортуйте модуль з іншого каталогу за допомогою модуля sys
Ми можемо використовувати sys.path щоб додати шлях до нової іншої папки (теки, звідки ми хочемо імпортувати модулі) до системного шляху, щоб Python також міг шукати модуль у цьому каталозі, якщо він не знаходить модуль у своєму поточному каталозі. як sys.path підпадає під клас типу списку тому ми можемо легко використовувати метод вставки, щоб додати шлях до папки.
Python3
uri проти url
# 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>))> |
>
>
Вихід :

Використовуючи sys
Спосіб 2: Використання PYTHONPATH змінна середовища
Так само, якщо ви не хочете використовувати система модуль для встановлення шляху до нового каталогу. Ви можете призначити шлях до каталогу для змінної PYTHONPATH і ваша програма все одно працюватиме.
в Linux , ми можемо використати таку команду в терміналі, щоб встановити шлях:
експорт PYTHONPATH='шлях/до/каталогу'
У системі Windows:
SET PYTHONPATH=шлях/до/каталогу
Щоб перевірити, чи змінна PYTHONPATH містить шлях до нової папки, ми можемо використати таку команду:
луна $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>))> |
>
>
Вихід:
рядок порожній

Використання PYTHONPATH
Припустімо, що у нас є така структура каталогу:
- project - Folder_1 - main.py - Folder_2 - subfolder - new.py>
Тепер ви хочете імпортувати new.py модуль від Папка_2 до папки Folder_1 нашого проекту main.py файл.
Синтаксис:
from project.folder.subfolder.filename import functionname
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()> |
>
>
Вихід:

Вихід