bpython

    image bpython — это красивый и функциональный интерфейс к стандартному интерпретатору Python для *nix. Он распространяется под Лицензией MIT и обладает следующими интересными возможностями:



    • In-line подсветка синстаксиса
    • Автодополнение кода с предложениями
    • Автовыравнивание кода
    • Pastebin
    • Сохранение введённого кода в файл
    • Восстановление удалённой строки («Rewind»)
    • Предложение параметров для функций



    В отличие от iPython, который сам реализует функции оболочки, добавляет улучшения и эмулирует стандартную облочку Python, bpython просто расширяет её возможности с помощью дополнительных модулей.

    Для in-line подсветки используется Pygments, который позволяет «раскрашивать» код уже в тот момент, когда вы его набираете. Как и в подавляющем большинстве современных IDE, bpython отображает список параметров для любой из вызываемых вами функций. Сначала он просматривает модуль, а в если подходящая функция не найдена, обращается к pydoc. Автодополнение кода изпользует интерфейс к libreadline. Самой необычной возможностью является функция «Rewind». Идея в том, что код, который вы вводите, сохраняется в памяти, и при вызове «Rewind» последняя строка удаляется, а код обновляется. Нажав «Rewind» дважды, вы удалите две строки. Это очень удобно при определении функций и классов. Ещё одной крайне полезной штукой является Pastebin. Нажав всего одну кнопку, вы получаете ссылку на свой код, готовый к публикации в интернете. Для это используется сервис bpaste.net, который, как несложно догадаться по названию, разработан специально для bpython. Так же вы можете самостоятельно изменить, например, горячие клавиши или цветовую гамму подсветки на наиболее вам подходящие немного подправив стандартный конфигурационный файл.



    Установка

    Для работы bpython, как вы уже поняли, требуется Pygments

    • Последней версией на данный момент является 0.9.6.2. Вы можете самостоятельно скачать пакет отсюда. Прошлые релизы доступны здесь.

    • Вы можете воспользоваться easy_install:
      easy_install bpython

    • Или Mercurial:
      hg clone bitbucket.org/bobf/bpython

    • Ну и наконец, пакет bpython включён во многие репозитории, думаю, найти его в них не составит большого труда


    Django

    Для того, чтобы bpython работал с Django, вам придется немного потрудиться :)

    1. Добавьте следующий код в ваш ~/.bashrc (.profile или .bash_profile):
      export PYTHONSTARTUP=~/.pythonrc


    2. Так же вам потребуется изменить ~/.pythonrc, добавьте в него:
      <br/>try:<br/>  from django.core.management import setup_environ<br/>  import settings<br/>  setup_environ(settings)<br/>except:<br/>  pass<br/> <br/>


    Таким образом bpython получит доступ к окружению Django.



    Полезные ссылки

    Официальный сайт проекта
    Документация
    Скриншоты
    Google Group
    IRC: irc.freenode.net — #bpython
    Поделиться публикацией

    Комментарии 40

      +4
      Как и обещал, написал небольшой обзор. Надеюсь, он окажется вам полезен :)
        +2
        Подсветка и автодополнение в стандартном интерпретаторе это круто :)
          +2
          к ipython'у тоже можно автодополнение прикрутить сцылка.
            +5
            Так у ipython оно и так есть… Или я что-то путаю?
              +1
              а, да, точно +)
          0
          Emacs — наше всё!
            +1
            Кстати, о емаксе, кто-нибудь знает как bpython прикрутить к нему? Я пару месяцев назад поглядывал, думал попробовать вместо ipython'a но не удалось его даже запустить в емаксе…
              +1
              Emacs запускает обычный интерпретатор и подсвечивает только приглашение, а остальное выделает жирным. Так что эту штуку к нему прикрутить надо все равно ;)
                +5
                vim — наше все!
              • НЛО прилетело и опубликовало эту надпись здесь
                  +1
                  Никак. Из под vim'а нельзя запускать параллельные процессы. Можно запустить vim и bpython в screen и повесить на хоткеи пересылку текста между ними.
                  +1
                  все хорошо, но в похоже что в терминале МакОС он не дружит с кириллицей.
                    0
                    Возможно, следует немного покапаться в сорцах, для добавления кириллицы :( на Ubuntu всё в порядке
                      +1
                      10.6.2, ставил через easy_install —
                        +1
                        у меня почему-то не работает. хотя все то же самое :(
                          0
                          Так-то и у меня работает :)
                          проблема в автодополнении. Если у вас есть класс у которого докстинг содержит русские буквы в юникоде, то при попытке его вызова, а вернее в тот момент, когда он пытается показать вам подсказку, он стабильно падает с
                          UnicodeEncodeError: 'ascii' codec can't encode characters in position 3-11: ordinal not in range(128)
                        +1
                        Узнал о нем краем уха услышав в Радио-Т, действительно крутая штука.
                          0
                          Дада :) bobuk обмолвился в последнем (или предпоследнем) выпуске
                          +1
                          Добавил порты pygments & bpython для CRUX в contrib репозиторий.
                            +1
                            давно мечтал о таком
                              +1
                              поставил для win32 отсюда: ikanobori.jp/storage/bpython-0.9.6-win-unofficial.tar.gz
                              требуются pygments, PyGObject, PyCairo, PyGTK.
                              запускать с помощью bpython-gtk.exe в каталоге python26/scripts
                              интерактивные подсказки просто супер
                                0
                                Спасибо, добавлять пока не буду, потому что windows под рукой нет, а пакет всё-таки unofficial — кто знает, что там :)
                                  0
                                  Расскажите, как вы ставили… мне так и не удалось запустить…

                                  Всё поставил, но пишет ошибки:

                                  Traceback (most recent call last):
                                  File «C:\Python\scripts\bpython-gtk-script.py», line 8, in
                                  load_entry_point('bpython==0.9.6-win-unofficial', 'console_scripts', 'bpytho
                                  n-gtk')()
                                  File «C:\Python\lib\site-packages\pkg_resources.py», line 318, in load_entry_p
                                  oint
                                  return get_distribution(dist).load_entry_point(group, name)
                                  File «C:\Python\lib\site-packages\pkg_resources.py», line 2221, in load_entry_
                                  point
                                  return ep.load()
                                  File «C:\Python\lib\site-packages\pkg_resources.py», line 1954, in load
                                  entry = __import__(self.module_name, globals(),globals(), ['__name__'])
                                  File «c:\python\lib\site-packages\bpython-0.9.6_win_unofficial-py2.6.egg\bpyth
                                  on\gtk_.py», line 37, in
                                  import gobject
                                  File «C:\Python\lib\site-packages\gtk-2.0\gobject\__init__.py», line 30, in
                                  from gobject.constants import *
                                  File «C:\Python\Lib\site-packages\gtk-2.0\gobject\constants.py», line 22, in <
                                  module>
                                  from _gobject import type_from_name
                                  ImportError: DLL load failed: ═х эрщфхэ єърчрээ√щ ьюфєы№.
                                    0
                                    1) скачал GTK, распаковал в C:\Program Files\Common Files\GTK2\
                                    2) прописал в PATH C:\Program Files\Common Files\GTK2\bin
                                    3) скачал, установил PyGObject, PyCairo, PyGTK, pygments
                                    4) распаковал ikanobori.jp/storage/bpython-0.9.6-win-unofficial.tar.gz
                                    во временный каталог, запустил setup.py install

                                    после этого проверьте, не выдаёт ли ошибку в питоновской консоли
                                    >>> import gobject
                                      0
                                      Спасибо, за ответ но всеравно не запускается :(

                                      теперь пишет:
                                      from gtk import _gtk
                                      ImportError: DLL load failed: ═х эрщфхэ єърчрээ√щ ьюфєы№.

                                      поставил:
                                      pycairo-1.4.12-2.win32-py2.6.exe
                                      pygobject-2.14.2-2.win32-py2.6.exe
                                      pygtk-2.12.1-3.win32-py2.6.exe
                                      setuptools-0.6c11.win32-py2.6.exe
                                      gtk+_2.18.5-1_win32.zip (распаковал в c:\Python\gtk2 и прописал путь к c:\Python\gtk2\bin)

                                      не работает :(
                                        0
                                        ммм вроде как не может найти gtk.dll проверьте пути
                                          0
                                          Поискал gtk.dll — не нашел…

                                          если я запускаю bpython.exe, то пишет:

                                          Traceback (most recent call last):
                                          File «C:\Python\scripts\bpython-script.py», line 8, in
                                          load_entry_point('bpython==0.9.6-win-unofficial', 'console_scripts', 'bpytho
                                          n')()
                                          File «C:\Python\lib\site-packages\setuptools-0.6c11-py2.6.egg\pkg_resources.py
                                          », line 318, in load_entry_point
                                          File «C:\Python\lib\site-packages\setuptools-0.6c11-py2.6.egg\pkg_resources.py
                                          », line 2221, in load_entry_point
                                          File «C:\Python\lib\site-packages\setuptools-0.6c11-py2.6.egg\pkg_resources.py
                                          », line 1954, in load
                                          File «c:\python\lib\site-packages\bpython-0.9.6_win_unofficial-py2.6.egg\bpyth
                                          on\cli.py», line 30, in
                                          import curses
                                          File «C:\Python\lib\curses\__init__.py», line 15, in
                                          from _curses import *
                                          ImportError: No module named _curses
                                            0
                                            запускайте bpython-gtk.exe
                                              0
                                              Блин, какой-то пародокс =)

                                              теперь:

                                              ImportError: No module named gtk

                                              хотя стоит gtk+ builder, т.е. все компоненты…

                                              есть ещё какие-то идеи?
                                                0
                                                ещё прикол в том, что на роутере =) Asus смог запустить, а вот под Windws — неа… =(
                                                  0
                                                  если все компоненты стоят, проблема думаю может быть только в переменных среды
                                                    0
                                                    Спасибо, за терпение =)

                                                    Запустил и на стационаре =) Было не удобно в консоли роутера писать =)
                                          0
                                          если написать
                                          >>> import gobject — ок

                                          когда пишешь:

                                          import gtk

                                          вываливается ошибка…

                                          ImportError: DLL load failed: ═х эрщфхэ єърчрээ√щ ьюфєы№.

                                          доставил:
                                          cairo_1.8.8-2_win32.zip
                                          glib_2.22.3-1_win32.zip

                                          ошибка не исчезла
                                      0
                                      После выполнения bpython manage.py shell я получил доступ из всей этой красоты только к автодополнению по табу.
                                        0
                                        поэтому рецепт приведен прямо в посте. нужно импортить все для шела из bpython
                                          0
                                          Сделал как написано в посте, ~/.pythonrc не нашел, создал, поместил туда, что у вас написано, bash не перезапускал, но export PYTHONSTARTUP=~/.pythonrc сделал.
                                          bpython manage.py shell открывает стандартный шелл питона.
                                          Что я не понял/сделал не так? Ubuntu 9.10
                                        0
                                        Замечательнейшая штуковина. Большое спасибо за обзор. Похоже, в IDE больше нет смысла :)
                                          0
                                          теперь о минусах… судя по всему, bpython не использует readline и мои настройки в нем не катят.

                                          Что нехорошо.
                                            0
                                            А чем его преимущества перед ipython?
                                              0
                                              Перечитайте топик. Если вы не знакомы с возможностями IPython, сначала проcмотрите ipython.scipy.org, а потом перечитайте топик.

                                            Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                                            Самое читаемое