4 альтернативы стандартной интерактивной оболочке Python
Как значительно улучшить свой опыт взаимодействия с Python? Как повысить удобство ежедневного программирования? Стандартная оболочка — это хорошо, но есть четыре альтернативы, которые добавляют все недостающие функции. Например, в стандартной интерактивной оболочке Python нет цветов, нет автозавершения, нет истории блоков. Поверьте, есть варианты получше. Об этом подробно в нашей новой статье-гиде.
Этот пост — вольный перевод на русский вот этой оригинальной статьи (с нашими дополнениями в местах, где это показалось нужным), которую написал Мартин Тома.
Одним из основных преимуществ Python по сравнению со многими другими языками является то, что он поставляется с интерактивной оболочкой.
Это особенно полезно для исследовательских задач, например, для анализа данных или отладки. Стандартная оболочка — это хорошо, но есть четыре альтернативы, которые предлагают недостающие возможности. Начинаем наш обзор!
-
Стандартная оболочка, дополненная rich
Rich — это библиотека Python для создания насыщенного текста и красивого форматирования в терминале. Ее можно установить с помощью pip install rich
.
Rich окрашивает вывод, но не ввод.
Вместо того, чтобы использовать другую оболочку, можно заставить свою привычную оболочку выполнить эти две магические строки:
from rich import pretty, inspect, traceback as tb pretty.install(); tb.install(show_locals=False)
Как только вы это сделаете, то будете вознаграждены цветным выводом.
-
IPython
IPython — это интерактивная оболочка Python Shell, известная большинству по блокнотам Jupyter. Его можно установить с помощью pip install ipython
. Вы запускаете его через консоль с помощью команды ipython.
IPython автоматически окрашивает входные данные, но не выходные. У него есть блок-история, как видно в конце.
Вы сразу заметите, что подсказка изменилась с >>>
на In [1]
. Конечно, его можно настроить. IPython предоставляет автозавершение, вызываемое символом Tab
, и цветные ошибки:
IPython имеет несколько преимуществ по сравнению с традиционной консолью:
- Цветной ввод и сообщения об ошибках: будет гораздо проще увидеть, где вы ввели строку или число.
- Автозавершение: это не супернавороченный инструмент, но, по крайней мере, вам не придется постоянно набирать длинные строки.
- История блоков: довольно часто возникает необходимость вернуться к прошлому вводу и изменить/выполнить его снова. Для однострочного ввода это нормально, но если у вас есть определение функции с вложенными циклами, стандартная оболочка просто показывает вам каждую строку. IPython, напротив, рассматривает весь блок как один ввод, что означает, что вам придется реже нажимать стрелку вверх.
- Команды IPython: можно использовать
clear
, чтобы получить чистое окно.
Также можно настроить Django на использование оболочки IPython. А еще можно установить rich
внутри оболочки IPython, чтобы получить цветной вывод.
-
bpython
bpython — это интерактивная оболочка с множеством функций автозавершения. Ее можно установить с помощью pip install bpython
и запустить с помощью bpython.
Автозавершение срабатывает во время набора текста и выдает удивительно полезные подсказки под курсором в окошке. По-настоящему сумасшедшей частью является справка по определению функции:
Еще лучше то, что эта помощь подстраивается под размер вашего терминала:
Лучше всего это видно в действии:
Изображение из README bpython
Подводя итог, можно сказать, что bpython имеет одно основное преимущество по сравнению с оболочкой по умолчанию и IPython: автозавершение / текст справки. Для многих это просто убийственная по важности функция. У bpython также есть возможности настройки, и его можно использовать с Django.
Однако есть и недостатки:
- Скорость: кажется, что есть небольшая задержка, когда набираешь текст. Это всего лишь доля секунды, но она заметна. Многих это бесит.
- Windows: у пользователей Windows могут быть проблемы с использованием библиотеки
curses
. Это в принципе возможно, но bpython официально не поддерживается. - Отсутствие истории блоков: это открытый вопрос с 2014 года, нам по-прежнему обещают это исправить.
-
PtPython
По набору поддерживаемых функций он похож на bpython, но ptpython использует другую цветовую тему. В отличие от bpython, он поддерживает историю блоков.
В ptpython, кажется, есть все: цветной ввод и вывод, форматирование сообщений об ошибках, история блоков, помощь по параметрам функций.
Мне не нравится цветовая тема, но ее можно изменить, нажав F2. К сожалению, не все работает так, как ожидалось. Предлагается тема solarized dark, но она не похожа на классический solarized dark 😢.
Резюме
Можно импортировать rich
в любой интерактивной оболочке. По этой причине я не включил его в следующее резюме.
Мне лично больше всего нравится bpython, но отсутствие истории блоков (смотрите проблему #22) является для меня препятствием. ptpython — следующий вариант, но я ненавижу его скин-тему. Поэтому я довольно часто использую IPython.
Сообщить об опечатке
Текст, который будет отправлен нашим редакторам: