Добавить свой python модуль в системный путь

Автор: Igor Kirsanov

Основной принцип работы питона со сторонними модулями - это иморт и поиск их в системных путях окружения.

Это может быть сама операционная система, виртуальное окружение (virtalenv), установочные пакеты, или относительный импорт (для 3 ветки python).

Пакеты подключаются в том порядке, в котором они прописаны в переменной sys.path, пример вызова и использования

import sys
print(sys.path)
# >>> print(sys.path)
# ['', '/usr/lib/python35.zip', 
# '/usr/lib/python3.5', 
# '/usr/lib/python3.5/plat-x86_64-linux-gnu', 
# '/usr/local/lib/python3.5/dist-packages', 
# '/usr/lib/python3/dist-packages']

Если ваше имя пакета (модуля) имеет тоже название, что и системный модуль, то подключиться вначале он. Поэтому нужно контролировать и проверять названия, иначе можно долго искать ошибки, пытаясь понять причину.

Добавить свой пакет в окружение возможно простой вставкой, в путь. Пример.

sys.path.insert(0, "/path/to/your/package_or_module")

В данном примере вставка в начало, позиция 0. Но вставка происходит перед '', что не всегда нам нужно, например, если мы хотим переопредилить модуль из нашей библиотеки

Поэтому часто в примерах можно встретить вставку после 1 элемента пути, пример.

sys.path.insert(1, "/path/to/your/package_or_module")

Данный способ очень не удобен когда нужно управлять различными версиями одного и того же модуля (пакета). В этих случаях существует два решения

Первый, складывать все в папку рядом с программой. Что не всегда реально, учитывая зависимости

Второй использовать виртуальное окружение virtualenv или песочницы