- Что такое lock-файлы
- Управление версиями интерпретатора — pyenv
- Инструмент pipenv
- Инструмент Poetry
- IPython
- Другие инструменты
Сам по себе язык программирования мало интересен, если для него нет подходящего интерпретатора или компилятора.
Но программы нужно не только запускать — их нужно доставлять до пользователя. Да и редкая программа бывает сразу готова, поэтому уже доставленную программу нужно обновлять. А еще ее нужно продолжать разрабатывать — иногда в течение нескольких лет.
Поэтому периодически возникают ситуации, когда нужно обновить какие-то сторонние библиотеки, а иногда и сам компилятор или интерпретатор. Для решения вышеперечисленных задач в Python появились и развились различные инструменты. О некоторых из них ниже пойдет речь. В этом уроке мы поговорим о важности выбора инструментария.
Большинство инструментов имеет хорошую документацию, поэтому в рамках курса не будет дублироваться эта информация. Цель урока — дать общее представление и предоставить право выбора, какой инструмент выбрать среди доступных.
Но для начала познакомимся с новой концепцией — lock-файлами.
Что такое lock-файлы
При разработке автор любой библиотеки так или иначе указывает версии сторонних пакетов, которые требуются для работы его кода.
Обычно версия не закрепляется жестко: вместо этого указывается диапазон версий, в пределах которого совместимость разных частей кода не нарушится. Именно для этого часто используется семантическое версионирование.
Но иногда все идет не по плану: диапазон версий указан слишком широкий, семантическое версионирование сработало неверно, в какой-то версии пакета возникла ошибка. В таких случаях проект работает только при определенном сочетании разных версий пакетов, а не на всех, как задумано.
Справиться с такой проблемой помогает lock-файл. Он не просто перечисляет пакеты с нечеткими версиями, но и фиксирует список конкретных версий, которые в данный момент для проекта подходят. В том или ином виде lock-файлы используются большинством пакетных менеджеров для разных языков программирования.
Управление версиями интерпретатора — pyenv
Даже на этапе обучения важно иметь актуальную версию интерпретатора. Python активно используют для нужд автоматизации, поэтому часто он доступен в каталогах пакетов различных ОС. Как правило, пакеты содержат только CPython. Но ведь есть и другие реализации и версии интерпретаторов Python, очень полезные в различных ситуациях.
Авторы библиотек часто вынуждены поддерживать несколько версий Python и проверять, не сказываются ли новые изменения в коде на работоспособности в разных версиях Python.
Таким образом, на одном компьютере может быть установлено несколько разных реализаций Python, причем каждая в нескольких вариантах. Управлять всем этим можно с помощью pyenv.
Инструмент pipenv
Программа pipenv берет на себя:
- Управление пакетами через
pip
- Создание виртуальных окружений через
venv
- Работу с зависимостями
- Контроль за версионированием и обновлением
- Построение графа зависимостей
- Воспроизводимость сборки с помощью lock-файлов
Это мощный инструмент, но есть одна сложность — для описания сборки пакета с проектом нужно использовать distutils и Setuptools. Новичкам может быть непросто освоить именно этот аспект, хотя в остальном пользоваться этой программой вполне удобно.
Инструмент Poetry
В наших курсах и проектах мы рекомендуем использовать именно Poetry. Также именно с помощью Poetry оформлен наш python package boilerplate. Что же это за инструмент?
В целом Poetry — это сравнительно молодой проект, упрощающий разработку на Python. Он решает все те же проблемы, что pipenv, но еще берет на себя сборку пакетов.
Более того, вместе с Poetry вам не нужно глубоко погружаться в изучение distutils или Setuptools, которые вообще не используются при описании poetry-пакета.
Документация у Poetry компактная и очень понятная. Описана и рекомендуемая структура директорий в типичном проекте, и использование альтернативных индексов, и многие другие аспекты.
IPython
Python REPL довольно прост, а главное — всегда доступен. Но в нем сложно работать с многострочным кодом и объемными программами.
Хорошая новость в том, что REPL в Python модульный. Существует несколько улучшенных его версий, наиболее популярная из которых — IPython.
IPython имеет:
- Подсветку синтаксиса
- Автодополнение модулей для импортирования и определений в модулях
- Подсказки по аргументам функций и отображение документации
- Многое другое
Большинство разработчиков, занимающихся анализом данных, проводят в IPython большую часть рабочего времени — настолько это мощная и удобная оболочка.
Другие инструменты
За десятилетия вокруг Python появилось огромное количество полезных инструментов. В мире Python правила хорошего тона предполагают тщательное документирование кода, поэтому практически любой инструмент можно освоить самостоятельно. Всегда можно открыть сайт PyPI и пройтись по списку тем. Там вы найдете интересные проекты, способные сильно упростить жизнь и сделать разработку удобнее.
Самостоятельная работа
В этом задании мы установим IPython в свое рабочее окружение:
- Установите с помощью
pip install
пакетipython
для текущего пользователя (--user
) - Убедитесь, что команда
ipython
выполняется и вы видите приглашение интерпретатора
Во втором пункте может возникнуть дополнительная задача — добавить путь $HOME/.local/bin
в переменную окружения PATH
. Это в любом случае стоит проделать, потому что большинство инструментов для работы с Python-кодом при установке размещают скрипты для запуска именно по этому пути.
Остались вопросы? Задайте их в разделе «Обсуждение»
Вам ответят команда поддержки Хекслета или другие студенты
Для полного доступа к курсу нужен базовый план
Базовый план откроет полный доступ ко всем курсам, упражнениям и урокам Хекслета, проектам и пожизненный доступ к теории пройденных уроков. Подписку можно отменить в любой момент.