news
Serverspace добавил возможность подключения S3 к сервису CDN
KI
28 ноября 2022
Обновлено 26 июля 2023

Как написать модуль в Python 3

CentOS Debian Linux Python Ubuntu

Введение

Модули в 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.

Вызов функции из импортированного модуля
Рисунок 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.

Вызов переменной из модуля
Рисунок 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.

Вызов функций из класса TestingClass
Рисунок 3 – Вызов функций из класса TestingClass

Для начала создаём переменную с названием “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.

Вызов функции из модуля
Рисунок 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.

Полученный результат
Рисунок 5 – Полученный результат

Успешный результат можем получить при указании правильного пути к файлу test3.

Модуль в переменной среде Python 3

Данный метод считается эффективным решением, модуль получает доступность для всей среды и системы. Проверим какой путь проверяет Python с помощью команд

python3
import sys
print(sys.path)

Получим в результате пути проверки интерпретатора Python, как показано на рисунке 6.

Общие пути проверки интерпретатора Python
Рисунок 6 – Общие пути проверки интерпретатора Python

Выбираем нужный путь и скопируем файл test3.py в нужный путь.

cp testing/test3.py /usr/lib/python3.10
python3 test5.py

В файле test5.py удалим импортирование модуля sys. Запустим код:


cat test5.py # чтобы удостовериться, что строка с импортированием sys удалён либо закомментирован
python3 test5.py

Получим результат как на рисунке 7.

Получение доступа к модулю из общего пути
Рисунок 7 – Получение доступа к модулю из общего пути

Копирование модуля в общий путь проверки интерпретатора Python оказалось наиболее эффективным. Причина в том, чтобы каждый раз не импортировать модуль sys в файлах кодов и указывать путь к нужному модулю, стоит скопировать нужный модуль в общий путь. Не стоит забывать о резервной копии нужных модулей, никто не исключает удаление нестандартных модулей после обновления пакетов Python.

Выводы

В данной инструкции мы рассмотрели такие возможности как:

  • Создание модуля;
  • Импортирование созданного модуля;
  • Ссылаться на модуль с помощью импортирования модуля sys из находясь в другой директории;
  • Добавление созданного модуля в общий путь интерпретатора Python;
  • Получили информацию об общих путях при поиске модуля с помощью командного интерпретатора Python.
Оценка:
5 из 5
Аverage rating : 5
Оценок: 2
191028 Санкт-Петербург Литейный пр., д. 26, Лит. А
+7 (812) 403-06-99
700 300
ООО «ИТГЛОБАЛКОМ ЛАБС»
700 300

Вам также может быть интересно...