Зарегистрируйтесь для доступа к 15+ бесплатным курсам по программированию с тренажером

Доступный инструментарий для работы с Python-проектами Python: Настройка окружения

Поговорим о важности выбора инструментария.

Сам по себе язык программирования мало интересен, если для него нет подходящего интерпретатора или компилятора. Но программы нужно не только запускать — их нужно доставлять до пользователя. Да и редкая программа бывает сразу готова, поэтому единожды доставленную программу нужно обновлять. А ещё её нужно продолжать разрабатывать — иногда в течение нескольких лет. Поэтому периодически возникают ситуации, когда нужно обновить какие-то сторонние библиотеки, а иногда и сам компилятор или интерпретатор. Для решения вышеперечисленных задач применительно к Python в разное время появились и развились различные инструменты. О некоторых из них ниже пойдёт речь.

Большинство инструментов имеет хорошую документацию, поэтому в рамках курса не будет дублироваться эта информация. Цель урока — дать общее представление, а местами предоставить и право выбора, какой инструмент выбрать среди доступных.

Но для начала познакомимся с новой концепцией — lock-файлами.

lock-файлы

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

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

lock-файл как раз и предназначен для того, чтобы в дополнение к перечню пакетов с "нечёткими" версиями, таки зафиксировать список конкретных версий, которые в данный момент для проекта подходят! В том или ином виде lock-files сейчас используются большинством современных пакетных менеджеров для разных языков программирования.

pyenv, средство управления разными версиями интерпретатора.

Даже на этапе обучения важно иметь актуальную версию интерпретатора. И Python, будучи языком, который давно начали использовать для нужд автоматизации, часто бывает доступен в каталогах пакетов различных ОС. Однако пакеты как правило содержат только CPython (а ведь есть и другие реализации интерпретаторов Python, очень полезные в различных ситуациях), и далеко не всегда "свежий".

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

Таким образом, на одной машине может быть установлено несколько разных реализаций Python и каждая — в более чем одном варианте. А управлять всем этим "серпентарием" призван pyenv. Как бы вы ни использовали Python, вам стоит научиться использовать этот инструмент.

pipenv, "инструментарий для людей"

Да, авторы pipenv так про своё детище и пишут. Что же это за штука? pipenv берёт на себя

  • управление пакетами, т.е. заменяет pip (но использует "под капотом");
  • создание виртуальных окружений (c "под капотом" venv);
  • работу с зависимостями, контроль за их версионированием и обновлением, построение графа зависимостей;
  • воспроизводимость сборки (через использование тех самых lock-файлов).

pipenv — инструмент мощный, но требующий умения использовать distutils/setuptools для описания процесса сборки пакета с проектом. Новичкам может быть сложно освоить именно этот аспект использования в остальном достаточно удобной программы.

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

poetry, ещё один человечный инструмент разработки

В наших курсах и проектах я рекомендую использовать именно poetry. Также именно с помощью poetry оформлен наш python package boilerplate. Что же это за инструмент?

poetry — это сравнительно молодой проект, упрощающий разработку на Python. В целом он решает все те же проблемы (и тоже использует lock-файлы), что решает и pipenv, но в отличие от последнего, берёт на себя сборку пакетов. Более того, вместе с poetry вам не нужно глубоко погружаться в изучение distutils/setuptools, которые вообще не используются при описании poetry-пакета!

Документация у poetry компактная, но очень понятная. Описана и рекомендуемая структура директорий в типичном проекте и использование альтернативных индексов и многие другие аспекты — и всё это снабжено примерами! Проходите по ссылке выше и знакомьтесь.

Важно: напоминаю, я буду предполагать в дальнейших курсах и проектах использование именно poetry!

IPython, REPL, которого мы заслужили!

Python REPL довольно удобен, а главное — всегда доступен. Но использовать его для ввода большого количества кода неудобно (даже многострочный код не по-редактируешь нормально!). Однако REPL в Python сделан модульным и существует несколько "улучшенных версий", наиболее популярная из которых — IPython.

IPython имеет

  • подсветку синтаксиса,
  • удобное авто-дополнение модулей для импортирования и определений в модулях,
  • подсказки по аргументам функций и отображение документации,
  • и многое-многое другое!

Большинство разработчиков, занимающихся анализом данных, проводят в IPython большую часть своего рабочего времени — настолько это мощная и полезная оболочка!

Всего не охватить...

Вокруг базового инструментария Python за десятилетия существования языка было создано огромное количество полезностей. И благодаря тому, что в Python-мире правила хорошего тона предполагают тщательное документирование кода и сам синтаксис к этому располагает (всё те же docstrings), практически любой инструмент можно освоить самостоятельно — стоит лишь проявить любопытство! Всегда можно открыть сайт PyPI и пройтись по списку тем (topics), чтобы найти интересные проекты, способные сильно упростить жизнь и просто сделать процесс разработки и изучения более приятным!


Самостоятельная работа

Выше был упомянут IPython как более удобная версия Python REPL. Настало время установить IPython в своё рабочее окружение!

  1. установите с помощью pip install пакет ipython для текущего пользователя (--user)
  2. убедитесь, что команда ipython выполняется и вы видите "приглашение" интерпретатора

Второй пункт может потребовать добавления пути $HOME/.local/bin в переменную окружения PATH. Это в любом случае стоит проделать: большинство инструментов для работы с Python-кодом при установке размещают скрипты для запуска именно по этому пути.


Аватары экспертов Хекслета

Остались вопросы? Задайте их в разделе «Обсуждение»

Вам ответят команда поддержки Хекслета или другие студенты.

Ошибки, сложный материал, вопросы >
Нашли опечатку или неточность?

Выделите текст, нажмите ctrl + enter и отправьте его нам. В течение нескольких дней мы исправим ошибку или улучшим формулировку.

Что-то не получается или материал кажется сложным?

Загляните в раздел «Обсуждение»:

  • задайте вопрос. Вы быстрее справитесь с трудностями и прокачаете навык постановки правильных вопросов, что пригодится и в учёбе, и в работе программистом;
  • расскажите о своих впечатлениях. Если курс слишком сложный, подробный отзыв поможет нам сделать его лучше;
  • изучите вопросы других учеников и ответы на них. Это база знаний, которой можно и нужно пользоваться.
Об обучении на Хекслете

Для полного доступа к курсу нужен базовый план

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

Получить доступ
900
упражнений
2000+
часов теории
3200
тестов

Открыть доступ

Курсы программирования для новичков и опытных разработчиков. Начните обучение бесплатно.

  • 120 курсов, 2000+ часов теории
  • 900 практических заданий в браузере
  • 360 000 студентов
Отправляя форму, вы соглашаетесь c «Политикой конфиденциальности» и «Условиями оказания услуг»

Наши выпускники работают в компаниях:

Логотип компании Альфа Банк
Логотип компании Aviasales
Логотип компании Yandex
Логотип компании Tinkoff
Рекомендуемые программы

С нуля до разработчика. Возвращаем деньги, если не удалось найти работу.

Иконка программы Python-разработчик
Профессия
Разработка веб-приложений на Django
1 декабря 8 месяцев

Используйте Хекслет по максимуму!

  • Задавайте вопросы по уроку
  • Проверяйте знания в квизах
  • Проходите практику прямо в браузере
  • Отслеживайте свой прогресс

Зарегистрируйтесь или войдите в свой аккаунт

Отправляя форму, вы соглашаетесь c «Политикой конфиденциальности» и «Условиями оказания услуг»