Рубріки: Теория

4 альтернативы стандартной интерактивной оболочке Python

Игорь Грегорченко

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

Этот пост — вольный перевод на русский вот этой оригинальной статьи (с нашими дополнениями в местах, где это показалось нужным), которую написал Мартин Тома.


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

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

 

  1. Стандартная оболочка, дополненная rich

Rich — это библиотека Python для создания насыщенного текста и красивого форматирования в терминале. Ее можно установить с помощью pip install rich.

Rich окрашивает вывод, но не ввод.

Вместо того, чтобы использовать другую оболочку, можно заставить свою привычную оболочку выполнить эти две магические строки:

from rich import pretty, inspect, traceback as tb
pretty.install(); tb.install(show_locals=False)

Как только вы это сделаете, то будете вознаграждены цветным выводом.

  1. IPython

IPython — это интерактивная оболочка Python Shell, известная большинству по блокнотам Jupyter. Его можно установить с помощью pip install ipython. Вы запускаете его через консоль с помощью команды ipython.

IPython автоматически окрашивает входные данные, но не выходные. У него есть блок-история, как видно в конце.

Вы сразу заметите, что подсказка изменилась с >>> на In [1] . Конечно, его можно настроить. IPython предоставляет автозавершение, вызываемое символом Tab, и цветные ошибки:

IPython имеет несколько преимуществ по сравнению с традиционной консолью:

  • Цветной ввод и сообщения об ошибках: будет гораздо проще увидеть, где вы ввели строку или число.
  • Автозавершение: это не супернавороченный инструмент, но, по крайней мере, вам не придется постоянно набирать длинные строки.
  • История блоков: довольно часто возникает необходимость вернуться к прошлому вводу и изменить/выполнить его снова. Для однострочного ввода это нормально, но если у вас есть определение функции с вложенными циклами, стандартная оболочка просто показывает вам каждую строку. IPython, напротив, рассматривает весь блок как один ввод, что означает, что вам придется реже нажимать стрелку вверх.
  • Команды IPython: можно использовать clear, чтобы получить чистое окно.

Также можно настроить Django на использование оболочки IPython. А еще можно установить rich внутри оболочки IPython, чтобы получить цветной вывод.

  1. bpython

bpython — это интерактивная оболочка с множеством функций автозавершения. Ее можно установить с помощью pip install bpython и запустить с помощью bpython.

Автозавершение срабатывает во время набора текста и выдает удивительно полезные подсказки под курсором в окошке. По-настоящему сумасшедшей частью является справка по определению функции:

Еще лучше то, что эта помощь подстраивается под размер вашего терминала:

Лучше всего это видно в действии:

Изображение из README bpython

 

Подводя итог, можно сказать, что bpython имеет одно основное преимущество по сравнению с оболочкой по умолчанию и IPython: автозавершение / текст справки. Для многих это просто убийственная по важности функция. У bpython также есть возможности настройки, и его можно использовать с Django.

Однако есть и недостатки:

  • Скорость: кажется, что есть небольшая задержка, когда набираешь текст. Это всего лишь доля секунды, но она заметна. Многих это бесит.
  • Windows: у пользователей Windows могут быть проблемы с использованием библиотеки curses. Это в принципе возможно, но bpython официально не поддерживается.
  • Отсутствие истории блоков: это открытый вопрос с 2014 года, нам по-прежнему обещают это исправить.

 

  1. PtPython

По набору поддерживаемых функций он похож на bpython, но ptpython использует другую цветовую тему. В отличие от bpython, он поддерживает историю блоков.

В ptpython, кажется, есть все: цветной ввод и вывод, форматирование сообщений об ошибках, история блоков, помощь по параметрам функций.

Мне не нравится цветовая тема, но ее можно изменить, нажав F2. К сожалению, не все работает так, как ожидалось. Предлагается тема solarized dark, но она не похожа на классический solarized dark 😢.

Резюме

Можно импортировать rich в любой интерактивной оболочке. По этой причине я не включил его в следующее резюме.

Мне лично больше всего нравится bpython, но отсутствие истории блоков (смотрите проблему #22) является для меня препятствием. ptpython — следующий вариант, но я ненавижу его скин-тему. Поэтому я довольно часто использую IPython.

Останні статті

Обучение Power BI – какие онлайн курсы аналитики выбрать

Сегодня мы поговорим о том, как выбрать лучшие курсы Power BI в Украине, особенно для…

13.01.2024

Work.ua назвал самые конкурентные вакансии в IТ за 2023 год

В 2023 году во всех крупнейших регионах конкуренция за вакансию выросла на 5–12%. Не исключением…

08.12.2023

Украинская IT-рекрутерка создала бесплатный трекер поиска работы

Unicorn Hunter/Talent Manager Лина Калиш создала бесплатный трекер поиска работы в Notion, систематизирующий все этапы…

07.12.2023

Mate academy отправит работников в 10-дневный оплачиваемый отпуск

Edtech-стартап Mate academy принял решение отправить своих работников в десятидневный отпуск – с 25 декабря…

07.12.2023

Переписки, фото, история браузера: киевский программист зарабатывал на шпионаже

Служба безопасности Украины задержала в Киеве 46-летнего программиста, который за деньги устанавливал шпионские программы и…

07.12.2023

Как вырасти до сеньйора? Девелопер создал популярную подборку на Github

IT-специалист Джордан Катлер создал и выложил на Github подборку разнообразных ресурсов, которые помогут достичь уровня…

07.12.2023