Собственные библиотеки модулей в скриптах Python

Не в первый раз уже напарываюсь,- Python не находит пакет при импорте:

приложение (скрипт), использует собственные пакеты. Модули лежат в папке classes рядом со скриптом. Один из модулей называется, к примеру, examplemodul.py и содержит exampleclass.py. В скрипте:

from classes.examplemodul import *

.... и получаем ошибку при запуске


Traceback (most recent call last):
File "script.py", line 10, in
from classes.examplemodul import *
ImportError: No module named classes.examplemodul


Разбираемся:

Стандартные модули находятся в каталоге, где их может найти соответствующий интерпретатор языка. Пути к каталогам, в которых Python ищет модули, можно увидеть в значении переменной sys.path. При запуске программы поиск модулей также идет в текущем каталоге. В операции импорта указан пакет classes.examplemodul, т.е. пакет classes содержащий модуль examplemodul. Но Python не считает папку classes пакетом.

В документации сказано, что "The __init__.py files are required to make Python treat the directories as containing packages;", т.е. для того, чтобы Python посчитал папку пакетом, необходимо создать файл __init__.py в этой папке. (пруфлинк). Только после этого examplemodul может быть импортирован.

Комментарии

Популярные сообщения