Одной из распространенных проблем, с которой сталкиваются новички в Python, является импортирование функций или классов из файлов, расположенных в разных папках. Рассмотрим типичную ситуацию. Предположим, есть следующая структура папок и файлов:
проект
├── папка1
│ └── файл1.py
└── папка2
└── файл2.py
В файле файл1.py
определена функция func()
, которую необходимо использовать в файл2.py
. Первым, что приходит в голову, это попытаться импортировать функцию напрямую:
from проект.папка1.файл1 import func
Однако, это выдаст ошибку, потому что Python не сможет найти указанный модуль. Как же быть?
Освойте Python на курсе от Skypro. Вас ждут 400 часов обучения и практики (достаточно десяти часов в неделю), подготовка проектов для портфолио, индивидуальная проверка домашних заданий и помощь опытных наставников. Получится, даже если у вас нет опыта в IT.
Правильное импортирование файлов из разных папок
Python использует переменную среды PYTHONPATH
для определения, где искать модули для импорта. По умолчанию PYTHONPATH
включает в себя текущую директорию (или директорию, откуда был запущен скрипт) и некоторые стандартные директории, где установлен Python.
Для решения проблемы необходимо добавить папку, содержащую нужный модуль, в PYTHONPATH
. Если папка проекта является корневой директорией для всех модулей, ее следует добавить в PYTHONPATH
.
Это можно сделать двумя способами:
1. Изменение PYTHONPATH
Добавьте путь к папке проекта в переменную среды PYTHONPATH
. Это можно сделать в командной строке следующим образом:
export PYTHONPATH=$PYTHONPATH:/путь/к/папке/проекта
После этого Python сможет найти и импортировать модули из этой папки.
На курсе Skypro «Python-разработчик» освоите основные инструменты программирования, получите опыт на реальных проектах и сможете стартовать в профессии уверенным новичком. Преподаватели — практикующие программисты с большим опытом, а в центре карьеры помогут составить цепляющее резюме и подготовиться к собеседованию.
2. Добавление пути при помощи sys.path
Можно динамически добавить путь к папке проекта в список путей, где Python ищет модули. Это делается с помощью модуля sys
:
import sys sys.path.append('/путь/к/папке/проекта')
Этот код необходимо добавить в начало файла файл2.py
, прежде чем попытаться импортировать модуль из файл1.py
.
Оба этих способа позволяют Python найти и импортировать модули из любой папки на компьютере. Однако, следует помнить, что изменение PYTHONPATH
или sys.path
влияет на все последующие операции импорта в текущем сеансе Python. Поэтому следует быть осторожным и избегать добавления путей, которые могут спровоцировать конфликты имен модулей.
Добавить комментарий