Python: модули и пакеты

Краш-курс по Python бесплатный и будет опубликован здесь, на сайте dev.to. Я буду публиковать новую статью каждые два дня или около того. Чтобы ничего не пропустить, вы можете следить за мной в twitter: Follow @EricLeCodeur

Модули и пакеты

Создавайте собственные модули

До сих пор мы использовали несколько модулей, уже включенных в Python. Теперь пришло время создать наши собственные модули.

Когда мы создаем приложение Python, мы не будем помещать весь наш код в один файл. Для удобства чтения и повторного использования можно создавать собственные модули.

Что такое модуль Python?

Python считает модулем любой файл с расширением «.py». Вот возможная структура файлов для вашего приложения

main.py
utilities.py
Войдите в полноэкранный режим Выход из полноэкранного режима

Приложение состоит из двух модулей. Основной модуль «main.py» и другой модуль «utilities.py».

Вот пример их содержания:

utilities.py

def display_message(message):
    print("******************")
    print(" " + message)
    print("******************n")
Войдите в полноэкранный режим Выход из полноэкранного режима

Файл содержит функцию display_message(), которая позволяет вывести на экран сообщение

main.py

import utilities

utilities.display_message("Hello World")
Войдите в полноэкранный режим Выход из полноэкранного режима

Здесь инструкция «import» позволяет включить и использовать код файла «utilities.py» в текущем файле.

Обратите внимание, что для вызова функции display_message() необходимо использовать имя модуля, т.е. utilities.display_message()

Если мы выполним файл main.py, то получим :

******************
 Hello World
******************
Войдите в полноэкранный режим Выход из полноэкранного режима

Альтернативный синтаксис

Можно использовать инструкцию «import» и другим способом

main.py

from utilities import display_message

display_message("Hello World")
Войдите в полноэкранный режим Выход из полноэкранного режима

Оператор «from» позволяет импортировать только часть файла «utilities.py». В этом случае будет импортирована только функция display_message().

Результат будет тот же, за исключением того, что вызов функции больше не требует имени модуля.

Импорт с другим именем модуля

При импорте можно изменить имя модуля

import utilities as utils

utils.display_message("Hello World")
Войдите в полноэкранный режим Выход из полноэкранного режима

Инструкция «as» позволяет изменить имя, которое будет использоваться для вызова.

Объединение нескольких модулей в пакет

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

Вот пример. Предположим, у нас есть приложение с такими модулями

math_add.py
math_sub.py
message_info.py
message_log.py
message_error.py
Войдите в полноэкранный режим Выход из полноэкранного режима

Здесь наше приложение состоит из 5 модулей. 2 относятся к математике, а 3 — к сообщениям.

Поэтому, возможно, имеет смысл разделить приложение с помощью этой структуры папок:

/math
    add.py
    sub.py

/message
    info.py
    log.py
    error.py
Войдите в полноэкранный режим Выход из полноэкранного режима

Здесь структура более логична, и поэтому ее будет легче понять, поддерживать и развивать.

Чтобы использовать эту структуру в Python. Вы должны сказать Python, что папки /math и /message на самом деле являются пакетами Python.

На самом деле «пакет» — это простая папка, содержащая модули.

Чтобы сообщить Python, что папка является пакетом, нужно создать пустой файл __init__.py.

/math
    __init__.py
    add.py
    sub.py

/message
    __init__.py
    info.py
    log.py
    error.py

Войдите в полноэкранный режим Выход из полноэкранного режима

Если в папке присутствует файл __init__.py, Python будет считать его пакетом.

Использование пакета в вашем приложении

Чтобы «импортировать» эти пакеты в код вашего приложения, необходимо использовать следующий синтаксис.

import math.add
Войдите в полноэкранный режим Выход из полноэкранного режима

Здесь Python сделает доступным код файла «add.py», включенного в пакет «math».

Использование библиотек, созданных сообществом

Одной из сильных сторон Python является его огромное сообщество.

У вас есть проблема, и вы хотите решить ее с помощью Python?

Зачем изобретать колесо? Скорее всего, кто-то уже сталкивался с этой проблемой и, что еще лучше, поделился своим решением с сообществом.

Пакеты, созданные сообществом, перечислены на сайте https://pypi.org/ и могут быть установлены на ваш компьютер с помощью приложения PIP.

Это приложение позволяет установить выбранную вами библиотеку (библиотеки) на вашу машину.

Проверка установки PIP

Из консоли запустите Python с модулем PIP

python -m pip --version

ou

python3 -m pip --version

# pip 22.0.4 from /Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/pip (python 3.10)
Войдите в полноэкранный режим Выход из полноэкранного режима

Здесь PIP установлен хорошо и по-настоящему. Если у вас возникли проблемы, обратитесь к процедуре установки Python в начале этого курса.

Установите и используйте свой первый пакет

python -m pip install emoji

ou

python3 -m pip install emoji

Войдите в полноэкранный режим Выход из полноэкранного режима

С помощью этой команды пакет «emoji» теперь установлен и может использоваться.

Обратите внимание, что работа некоторых пакетов зависит от других пакетов. PIP установит требуемый пакет, а также другие необходимые зависимости.

python3 - m pip list

Package    Version
---------- -------
emoji      1.7.0
pip        22.0.4
setuptools 58.1.0
Войдите в полноэкранный режим Выход из полноэкранного режима

Команда PIP list отображает список всех пакетов, установленных на вашей машине.

PIP по умолчанию установил последнюю версию

python3 -m pip uninstall emoji

python3 -m pip list

Package    Version
---------- -------
pip        22.0.4
setuptools 58.1.0
Войдите в полноэкранный режим Выход из полноэкранного режима

Команда pip uninstall удаляет пакет «emoji» на вашей машине.

Пакет «emoji» позволяет добавлять emoji в сообщение, выводимое в терминале.

Вот пример использования пакета emoji

import emoji

print(emoji.emojize('Python is :thumbs_up:'))

# Python is ?
Войдите в полноэкранный режим Выход из полноэкранного режима

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

Обратите внимание, что многие пакеты имеют онлайн-документацию, которая расскажет вам, какие функции доступны и как их использовать.

Где установлены пакеты на вашей машине?

Пакеты, установленные с помощью PIP, устанавливаются в центральную папку, общую для всех ваших приложений Python.

Таким образом, если пакет установлен на вашей машине, нет необходимости переустанавливать его, если он нужен для другого приложения.

Проблема с версией?

Такой подход однажды приведет к проблемам с версиями. Например, ваше приложение 1 будет использовать пакет «emoji» версии 1.7, но вашему приложению 2 нужен пакет «emoji» версии 1.8.

Как избежать проблем с версиями?

Чтобы избежать подобной проблемы, есть решение, и оно заключается в создании «виртуальной среды» для каждого из ваших проектов.

Виртуальная среда

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

Например, Python, PIP и пакеты сообщества, которые вы используете в своем приложении.

Наконец, эта среда может быть повторно создана на любой машине или сервере и запустить ваш код с абсолютно правильными версиями всего!

Что такое виртуальная среда?

Не позволяйте громкому имени обмануть вас. Виртуальная среда — это просто папка, содержащая x-версию Python (например, 3.9) и x-версию других пакетов, необходимых для запуска вашего приложения.

Каждое приложение имеет свою собственную виртуальную среду (папку) для хранения библиотек, необходимых для его нормального функционирования.

Пример создания виртуальной среды

При работе над проектом на Python приходится работать с несколькими библиотеками, такими как FastAPI, Flask или Django и т.д.

В зависимости от того, когда был создан проект. Возможно, например, что библиотека FastAPI не имеет точно такого же номера версии в других проектах.

Как мы можем позволить каждому проекту иметь свою собственную версию Python и свои собственные версии библиотек?

Мы будем использовать виртуальные среды.

Виртуальная среда позволяет установить Python и библиотеки python в папку/проект, не затрагивая другие папки/проекты.

Python предоставляет систему для создания виртуальных сред.

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

Как создать виртуальную среду

Обычно мы помещаем виртуальную среду в папку проекта.

Создайте и откройте папку для нашего проекта

$ mkdir learn-python
$ cd learn-pythob

Войдите в полноэкранный режим Выход из полноэкранного режима

Теперь из этой папки вы можете создать виртуальную среду, которая будет прикреплена к проекту

$ python3 -m venv env

Войдите в полноэкранный режим Выход из полноэкранного режима

Здесь мы запускаем python3 с опциональным модулем venv. env — это имя, которое мы даем нашей виртуальной среде.

После создания виртуальной среды вы можете активировать ее:

MacOS / Linux

$ source env/bin/activate

Войдите в полноэкранный режим Выход из полноэкранного режима

Windows

$ env\Scripts\activate.bat

Войдите в полноэкранный режим Выход из полноэкранного режима

Вот и все! Теперь у вас есть виртуальная среда Python, созданная для вашего проекта. Обычно терминал сообщает вам, что ваша среда активирована, отображая ее имя.

Обратите внимание, что для деактивации виртуальной среды необходимо выполнить команду

$ deactivate
Войдите в полноэкранный режим Выход из полноэкранного режима

Заключение

На сегодня это все, я буду публиковать новую статью каждые два дня или около того. Чтобы ничего не пропустить, вы можете следить за мной в twitter: Follow @EricLeCodeur

Оставьте комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *