У цій статті ми дізнаємося, як імпортувати модуль із батьківського каталогу. З Python 3.3 посилання або імпорт модуля в батьківському каталозі заборонені. З наведеного нижче прикладу ви можете це чітко зрозуміти.

У батьківському каталозі ми маємо підкаталог, файл geeks.py, а в підкаталозі – файл python під назвою temp.py. Тепер давайте спробуємо імпортувати модуль geeks у батьківський каталог із файлу temp.py у підкаталог.
geeks.py (модуль у батьківському каталозі)
Python3
видобуток даних
def> geek_method():> > print> (> 'This method in geeks module.......bye'> )> |
>
>
temp.py (файл python у підкаталозі)
Python3
# importing the module in> # parent directory> from> parentdirectory> import> geeks> # calling the func1() method> # from geeks module> geeks.geek_method()> |
>
>
Як ми обговорювали раніше, неможливо імпортувати модуль із батьківського каталогу, тому це призводить до приблизно такої помилки.
Traceback (останній останній виклик):
Файл C:/Users/sai mohan pulamolu/Desktop/parentdirectory/subdirectory/temp.py, рядок 2, у
з батьківського каталогу імпортувати вундеркіндів
ModuleNotFoundError: Немає модуля з назвою «parentdirectory»
перетворення об'єкта в рядок
Тепер давайте дізнаємося, як імпортувати модуль із батьківський каталог:
Щоб імпортувати модуль, каталог, що містить цей модуль, має бути присутнім у PYTHONPATH. Це змінна середовища, яка містить список пакетів, які завантажуватиме Python. Список пакетів, представлений у PYTHONPATH, також присутній у sys.path, тому шлях до батьківського каталогу буде додано до sys.path.
Для нашої роботи ми використовуємо три різні підходи, які пояснюються нижче на прикладах.
Спосіб 1. Імпортуйте з батьківського каталогу за допомогою методу sys.path
Тут ми використаємо модуль sys і встановимо шлях безпосередньо до потрібного модуля.
Додайте батьківський каталог до sys.path використовуючи додати() метод . Це вбудована функція модуля sys, яку можна використовувати зі змінною шляху для додавання певного шляху для пошуку інтерпретаторів. Наступний приклад показує, як це можна зробити.
Python3
c структура в структурі
import> sys> # setting path> sys.path.append(> '../parentdirectory'> )> # importing> from> parentdirectory.geeks> import> geek_method> # using> geek_method()> |
>
>
Вихід:
This method in geeks module.......bye>
Спосіб 2. Імпортуйте з батьківського каталогу за допомогою метод os.path.abspath().
Тут ми використаємо модуль sys, а також модуль path для отримання каталогу та встановимо шлях безпосередньо до потрібного модуля.
Синтаксис: os.path.abspath(шлях)
Параметр:
Шлях: Шляховий об’єкт, що представляє шлях до файлової системи.Тип повернення: Цей метод повертає нормалізовану версію шляху шляху.
Спочатку ми отримаємо назву каталогу, де зараз знаходиться файл temp.py, використовуючи path.path(__file__). abspath(), по-друге, додайте каталог до sys.path .append для перевірки, ми будемо використовувати його метод.
Python3
перемикач c#
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()> |
>
>
Вихід:
This method in geeks module.......bye>
Спосіб 3: імпортуйте з батьківського каталогу за допомогою os.path.dirname метод
Тут ми будемо використовувати модуль sys, а також модуль os для отримання каталогу (поточного, а також батьківського) і встановимо шлях безпосередньо до необхідного модуля.
Синтаксис: os.path.dirname(шлях)
Параметр:
шлях : Об’єкт, схожий на шлях, що представляє шлях файлової системи.Тип повернення: Цей метод повертає рядкове значення, яке представляє назву каталогу з указаного шляху.
По-перше, ми отримаємо поточний каталог за допомогою os.path.dirname (os.path.realpath(__file__)), по-друге, ми отримаємо батьківський каталог за допомогою os.path.dirname(), нарешті, додамо батьківський довідник до sys.path для перевірки скористаємося його методом.
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()> |
>
>
Вихід: