Как python находит свои модули
Строго говоря, модуль - это отдельный файл Python, а пакет - это папка, содержащая файлы Python, сопровождаемые (может быть пустым) именем файла __init__.py, чтобы сообщить Python, что это пакет для импорта модулей. В обоих случаях модули нуждаются в .pyрасширении, но их импорт выполняется без (см. Далее ниже).
По умолчанию Python ищет свои модули и пакеты в $PYTHONPATH.
Чтобы узнать, что входит в $ PYTHONPATH, запустите следующий код в python (3):
import sys
print(sys.path)
Как добавить каталог
Время от времени
Из файла python вы можете время от времени добавлять пути к пути по умолчанию, добавляя следующие строки в раздел head вашего приложения или скрипта python:
import sys
sys.path.insert(0, "/path/to/your/package_or_module")
Например:
если у меня есть папка: /home/myname/pythonfilesи я хочу импортировать файл module_1.py, расположенный в этом каталоге, я добавляю это в раздел head моего кода:
import sys
sys.path.insert(0, "/home/myname/pythonfiles")
И я могу просто импортировать файл module_1.py:
import module_1
Когда я создаю пакет и хочу импортировать модуль (и) из пакета, мне нужно создать папку $PYTHONPATH, содержащую модули и сопровождаемый (может быть пустым) файлом, который называется__init__.py
Например:
Для того, чтобы импортировать из пакета (папка) называется my_packageв /home/myname/pythonfiles, добавьте /home/myname/pythonfilesпуть к вашему $PYTHONPATH, как и в примере 1, и импортировать модуль с именем module_2.py(в папке пакета) просто с: `
from <packagename> import module_2
Добавление каталогов на $PYTHONPATHпостоянной основе:
Добавьте следующую строку в ваш ~/.profileфайл.
export PYTHONPATH=$PYTHONPATH:/path/you/want/to/add
Подкаталоги
Изнутри пакета подкаталоги не включаются просто так; вам нужно «связать» каталоги. Чтобы импортировать модуль module_3.py, внутри папки subfolderвнутри папки packagename:
import packagename.subfolder.module_3
Учитывая тот факт, что все подпапки в пакете содержат собственный __init__.pyфайл.
Когда модуль находится в том же каталоге, что и скрипт или приложение
Нет необходимости вставлять путь к модулю, когда он находится в том же каталоге, что и скрипт или приложение, он добавляется автоматически.
Пример:
Если у меня есть папка, содержащая script.pyи module.py, я могу просто импортировать модуль:
import module
__init__.pyфайл в вашей папке? Вот как Python создает пакеты и позволяет вам импортировать модули из этого пакета. guide.python-distribute.org/creation.html