Python: Импорт с помощью sys.path.append

1. Импорт функции из файла, который находится в каталоге на уровень ниже относительно текущего файл

project/
│
├── main.py           # текущий файл, где требуется импорт
└── subfolder/
    └── my_module.py   # файл, из которого нужно импортировать функцию

В main.py:

import sys
import os

# Добавляем путь к подкаталогу
# os.path.dirname(__file__) возвращает путь к текущему файлу (main.py)
# os.path.join(..., 'subfolder') добавляет подкаталог к пути
# sys.path.append(...) добавляет путь к sys.path, чтобы Python мог найти модуль my_module
sys.path.append(os.path.join(os.path.dirname(__file__), 'subfolder'))

# Импортируем нужную функцию из my_module
from my_module import my_function

# Используем my_function
my_function()

2. Импорт функции из файла, который находится в каталоге на уровень выше относительно текущего файл

project/
│
├── main.py           # файл, из которого нужно импортировать функцию
└── subfolder/
    └── my_module.py   # текущий файл, где нужно сделать импорт

В main.py:

import sys
import os

# Добавляем путь на уровень выше к sys.path
# os.path.dirname(__file__) возвращает текущий каталог (subfolder)
# os.path.dirname(os.path.dirname(__file__)) поднимается на уровень выше, к корневому каталогу (project)
# sys.path.append(...) добавляет корневой каталог project в пути поиска модулей sys.path
sys.path.append(os.path.dirname(os.path.dirname(__file__)))

# Импортируем нужную функцию
from main import main_function

# Вызываем функцию
main_function()
1.9 г. Просмотров: 768
Материал помог? Оценка помогает находить устаревшие и спорные решения.

Комментарии

0

Нашли ошибку или хотите дополнить материал?

Комментариев пока нет.Можно первым дополнить материал или сообщить об ошибке.
Telegram