Собственные библиотеки модулей в скриптах Python
Не в первый раз уже напарываюсь,- Python не находит пакет при импорте:
приложение (скрипт), использует собственные пакеты. Модули лежат в папке classes рядом со скриптом. Один из модулей называется, к примеру, examplemodul.py и содержит exampleclass.py. В скрипте:
.... и получаем ошибку при запуске
Разбираемся:
Стандартные модули находятся в каталоге, где их может найти соответствующий интерпретатор языка. Пути к каталогам, в которых 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 может быть импортирован.
приложение (скрипт), использует собственные пакеты. Модули лежат в папке 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 может быть импортирован.
Комментарии
Отправить комментарий