Как 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