Краш-курс по 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