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

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

Сам по себе язык программирования мало интересен, если для него нет подходящего интерпретатора или компилятора.

Но программы нужно не только запускать — их нужно доставлять до пользователя. Да и редкая программа бывает сразу готова, поэтому уже доставленную программу нужно обновлять. А еще ее нужно продолжать разрабатывать — иногда в течение нескольких лет.

Поэтому периодически возникают ситуации, когда нужно обновить какие-то сторонние библиотеки, а иногда и сам компилятор или интерпретатор. Для решения вышеперечисленных задач в 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 в свое рабочее окружение:

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

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


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

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

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

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

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

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

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

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

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

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

Логотип компании Альфа Банк
Логотип компании Aviasales
Логотип компании Yandex
Логотип компании Tinkoff
Рекомендуемые программы
профессия
от 25 000 ₸ в месяц
Разработка веб-приложений на Django
10 месяцев
с нуля
Старт 28 ноября
профессия
от 24 542 ₸ в месяц
новый
Сбор, анализ и интерпретация данных
9 месяцев
с нуля
Старт 28 ноября

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

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

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

Отправляя форму, вы принимаете «Соглашение об обработке персональных данных» и условия «Оферты», а также соглашаетесь с «Условиями использования»