logo

Python – імпорт із батьківського каталогу

У цій статті ми дізнаємося, як імпортувати модуль із батьківського каталогу. З 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()>

>

>

Вихід: