1. Введение в модули и пакеты: менеджер pip и виртуальные окружения
Введение в модули и пакеты: менеджер pip и виртуальные окружения
Добро пожаловать в курс «Экосистема библиотек Python: от установки до практики». Мы начинаем наше путешествие с фундаментальных основ, без которых профессиональная разработка на Python невозможна. Прежде чем мы начнем изучать конкретные библиотеки для анализа данных, веб-разработки или автоматизации, нам нужно научиться грамотно ими управлять.
Представьте, что вы строите дом. Python сам по себе — это набор отличных инструментов: молоток, пила, отвертка (встроенные функции и типы данных). Но чтобы построить сложный дом, вам нужны готовые кирпичи, окна, двери и система отопления. Вам не нужно изобретать их с нуля — вы заказываете их у поставщиков. В мире Python такими «готовыми компонентами» являются библиотеки, а «службой доставки» и «складом» служат инструменты, о которых мы поговорим в этой статье.
Анатомия кода: Модули и Пакеты
В Python существует иерархия организации кода, которая позволяет структурировать проекты любого масштаба. Давайте разберемся с терминологией, чтобы говорить на одном языке.
Что такое модуль?
Модуль — это просто файл с расширением .py, содержащий код на Python. Это может быть набор функций, классов или переменных. Когда вы пишете import math, вы подключаете модуль math, который является частью стандартной библиотеки Python.
Пример простейшего модуля my_module.py:
Чтобы использовать его в другом файле, мы пишем:
Что такое пакет?
Пакет (package) — это каталог (папка), который содержит модули и специальный файл __init__.py. Этот файл (часто пустой) сигнализирует интерпретатору Python, что данная папка является пакетом и ее можно импортировать.
Пакеты позволяют группировать модули по смыслу. Например, библиотека для работы с сетью может быть пакетом, внутри которого есть модули для работы с HTTP, FTP и электронной почтой.
!Структурное различие между модулем и пакетом в Python
Что такое библиотека?
Термин библиотека (library) является более общим и часто используется как синоним пакета. Обычно под библиотекой понимают совокупность пакетов и модулей, решающих определенную задачу (например, requests для HTTP-запросов или pandas для анализа данных).
PyPI и менеджер пакетов pip
Где хранятся все эти библиотеки? Существует центральный репозиторий, который называется PyPI (Python Package Index). Это огромный онлайн-каталог, куда разработчики со всего мира загружают свои библиотеки с открытым исходным кодом.
Чтобы скачать что-то из этого каталога, нам нужен специальный инструмент. Здесь на сцену выходит pip.
pip (Package Installer for Python) — это стандартный менеджер пакетов для Python. Он позволяет устанавливать и управлять библиотеками, которые не входят в стандартную поставку Python.
Основные команды pip
Работа с pip происходит в командной строке (терминале). Вот самые важные команды, которые вы будете использовать ежедневно:
requests из PyPI и устанавливает её на ваш компьютер.== позволяет зафиксировать версию.Проблема зависимостей и «Dependency Hell»
Представьте ситуацию: вы работаете над двумя проектами.
* Проект А (старый веб-сайт) написан год назад и использует библиотеку Django версии 2.2.
* Проект Б (новый стартап) вы пишете сейчас и хотите использовать новейший Django версии 4.0.
Если вы просто установите Django через pip install django в вашу основную систему, у вас возникнет конфликт. Python по умолчанию устанавливает библиотеки в одну общую папку. Вы не можете иметь две разные версии одной и той же библиотеки в одном глобальном пространстве.
Если вы обновите Django до 4.0 ради Проекта Б, Проект А перестанет работать. Это классическая проблема, известная как «Ад зависимостей».
!Иллюстрация проблемы конфликта версий и её решения через изоляцию
Виртуальные окружения: venv
Решением проблемы является использование виртуальных окружений.
Виртуальное окружение — это изолированная директория, которая содержит свою собственную установку Python и свой собственный набор библиотек. Когда вы работаете в виртуальном окружении, любые библиотеки, которые вы устанавливаете, попадают только в эту папку и не влияют на другие проекты или глобальную систему.
Создание и использование venv
Начиная с версии Python 3.3, модуль venv встроен в язык, поэтому ничего дополнительно устанавливать не нужно.
#### 1. Создание окружения
Перейдите в папку вашего проекта через терминал и выполните:
* Windows: * macOS / Linux:
Эта команда создаст папку с именем venv (второе слово в команде — это имя папки, вы можете назвать её как угодно, например .venv или env, но venv — это стандарт).
#### 2. Активация окружения
После создания окружение нужно активировать. Это скажет вашему терминалу использовать Python и pip именно из этой папки.
* Windows: * macOS / Linux:
После активации в начале строки вашего терминала появится надпись (venv). Это верный знак того, что вы находитесь в изолированном пространстве.
#### 3. Работа внутри окружения
Теперь, когда вы видите (venv), любые команды pip install будут устанавливать пакеты только в папку venv/lib.
Попробуйте установить что-нибудь:
Если вы проверите pip list, вы увидите только requests и базовые пакеты, даже если в вашей основной системе установлены сотни других библиотек.
#### 4. Деактивация
Чтобы выйти из виртуального окружения и вернуться в глобальную систему, просто введите:
Фиксация зависимостей: requirements.txt
Когда вы работаете в команде или переносите проект на сервер, вам нужно гарантировать, что везде установлены одни и те же версии библиотек.
Для этого используется файл requirements.txt. Это простой текстовый список всех библиотек проекта.
Создание списка (Freeze)
Находясь в активированном виртуальном окружении, выполните:
Символ > перенаправляет вывод команды pip freeze (которая показывает список установленных пакетов в специальном формате) в файл. Содержимое файла будет выглядеть примерно так:
Установка из списка
Теперь, если другой разработчик скачает ваш проект, ему не нужно гадать, какие библиотеки устанавливать. Он просто создаст свое виртуальное окружение и выполнит одну команду:
Флаг -r говорит pip прочитать файл и установить всё, что в нем перечислено.
Лучшие практики (Best Practices)
Подводя итог, вот алгоритм, которому следует каждый профессиональный Python-разработчик при начале нового проекта:
python -m venv venv.venv в .gitignore (если вы используете Git), так как виртуальное окружение весит много и его не нужно хранить в репозитории — его легко воссоздать.pip.pip freeze > requirements.txt.> «Виртуальные окружения — это не просто удобство, это гигиена разработки. Работа без них подобна использованию одной зубной щетки на всё общежитие.»
В следующей статье мы перейдем к практике и разберем, как устроена структура популярных библиотек изнутри, и научимся читать документацию как профессионалы.
Полезные ссылки
* Официальная документация по установке пакетов * Документация модуля venv * Каталог пакетов PyPI