Введение
Модули в Python – это файлы с расширением “.py”, написанные коды на языке Python. На любой файл написанный в Python можно ссылаться как на модуль.
Несколько модулей доступны после установки языка Python. Некоторые модули приходится устанавливать вручную.
Установку модулей вручную мы рассматривали в нашем руководстве про Импорт модулей в Python 3.
С помощью этого руководство вы поймёте как:
- Написать модуль;
- Доступ к модулям из других директорий;
- Использование переменной среды;
- Модуль в переменной среде Python 3.
Подготовка к работе
У вас должен быть настроен дистрибутив под управлением Debian / Ubuntu / CentOS, настройка пользователя с правами sudo. Настроенная виртуальная среда языка Python. Рекомендуем заранее подготовиться перед тем, как приступить к работе.
Написание и импортирование модулей
Первым делом стоит проверить версию Python с помощью:
python3 --version
На текущий момент актуальная версия 3.10.6. Если у вас старая версия, то обновите индекс пакетов и пакетов программного обеспечения с помощью:
sudo apt update && apt upgrade -y
Запустим виртуальную среду и с помощью текстового редактора Vim создадим новый файл с названием testingFile.py и добавим следующие строчки кода в самом начале указав шебанг. Шебанг – с помощью #! указываем путь к интерпретатору Python, подробнее рассмотрено в нашей инструкции.
#!/usr/bin/env python
# Определение функции
def test():
print(“This is test file”)
Если запустим с помощью:
python3 testingFile.py
То получим пустой результат. Необходимо создать второй файл и назовём test2.py и откроем с помощью vim и импортируем testingFile.py в файл test2.py и вызовем функцию test.
vim test2.py
#!/usr/bin/env python3
#Импорт файла
import testingFile
#Вызов функции из файла testingFile
testingFile.test()
Получим следующий результат, как на рисунке 1.

Мы импортируем модуль без использования “from testingFile import test”, нам необходимо вызывать функцию с помощью использованием названия модуля. Использование from … import можно рассмотреть в нашей инструкции.
Рассмотрим использование переменных в нашем модуле, добавим строчку в самом низу:
#!/usr/bin/env python3
# Определение функции
def test():
print("This is test file")
#Присвоение значения переменной
name = "serverspace"
Далее в файле test2.py в конце добавим строку изменив наш код в следующий вид:
#!/usr/bin/env python3
#Импорт файла
import testingFile
#Вызов функции из файла testingFile
testingFile.test()
#Вызов функции печати с использованием переменной
print(testingFile.name)
Результат приведён на рисунке 2.

Когда рассмотрели вызов функции печати и переменной, рассмотрим создание класса и добавим в класс несколько атрибутов использовав следующие команды.
#!/usr/bin/env python3
# Определение функции
def test():
print("This is test file")
#Присвоение значения переменной
name = "serverspace"
#Определение класса
class TestingClass:
def __init__ (self, name, age):
self.name = name
self.age = age
def tell_me_about_TestingClass(self):
print("this class is " + self.name + ".")
print(self.name + " is the testing's name")
Теперь с помощью файла test2.py вызовем функцию инициализации и информацию о классе:
#!/usr/bin/env python3
#Импорт модуля
import testingFile
#Вызов функции
testingFile.test()
#Вывод информации из другого модуля
print(testingFile.name)
#Вызов функций из класса
server = testingFile.TestingClass("testingserver", "30 y.o.")
server.tell_me_about_TestingClass()
Результат приведён на рисунке 3.

Для начала создаём переменную с названием “server”, вызываем класс из модуля testingFile.py, присваиваем значения для переменной name “testingserver” и значение “30 y.o.” для переменной age.
Важно иметь ввиду, что модуль является определением, но в то же время можно реализовывать код. Рассмотрим новый пример модуля в файле test3.py
#!/usr/bin/env python3
def TestHello():
print(“Testing Hello, World!”)
#Вызов функции в модуле
TestHello()
Импортируем модуль в файл test4.py и проверим вызов функции TestHello:
#!/usr/bin/env python3
import test3
Получим результат в соответствии с рисунком 4.

Причина простая, внутри файла test3.py, создаём функцию с названием TestHello и внутри него реализуем функцию печати текста. Затем вызываем созданную функцию и импортируем в файл test4.py. Таким образом с помощью запуска test4.py вызываем функцию печать текста из функции TestHello.
Доступ к модулям из других директорий
Иногда некоторые модули полезны не только для одного проекта, но и для других проектов. По этой причине не обязательно хранить модуль в одной директории проекта. Можно создать для общего использования и ссылаться на эту директорию использовав несколько методов.
Использование переменной среды
Если модуль находится вне проекта, используем модуль sys и с его помощи укажем путь к среде, где находится файл с нужным модулем. Например, находясь в домашней директории создав файл test5.py, мы не сможем импортировать файл test3.py, который находится в директории с виртуальной средой. Рассмотрим, как указывать путь к файлу test3.py:
import sys
sys.path.append(‘/root/testing/’)
import test3
И получим успешный результат, как показано на рисунке 5.

Успешный результат можем получить при указании правильного пути к файлу test3.
Модуль в переменной среде Python 3
Данный метод считается эффективным решением, модуль получает доступность для всей среды и системы. Проверим какой путь проверяет Python с помощью команд
python3
import sys
print(sys.path)
Получим в результате пути проверки интерпретатора Python, как показано на рисунке 6.

Выбираем нужный путь и скопируем файл test3.py в нужный путь.
cp testing/test3.py /usr/lib/python3.10
python3 test5.py
В файле test5.py удалим импортирование модуля sys. Запустим код:
cat test5.py # чтобы удостовериться, что строка с импортированием sys удалён либо закомментирован
python3 test5.py
Получим результат как на рисунке 7.

Копирование модуля в общий путь проверки интерпретатора Python оказалось наиболее эффективным. Причина в том, чтобы каждый раз не импортировать модуль sys в файлах кодов и указывать путь к нужному модулю, стоит скопировать нужный модуль в общий путь. Не стоит забывать о резервной копии нужных модулей, никто не исключает удаление нестандартных модулей после обновления пакетов Python.
Выводы
В данной инструкции мы рассмотрели такие возможности как:
- Создание модуля;
- Импортирование созданного модуля;
- Ссылаться на модуль с помощью импортирования модуля sys из находясь в другой директории;
- Добавление созданного модуля в общий путь интерпретатора Python;
- Получили информацию об общих путях при поиске модуля с помощью командного интерпретатора Python.