IPython

Материал из Xgu.ru

Перейти к: навигация, поиск
stub.png
Данная страница находится в разработке.
Эта страница ещё не закончена. Информация, представленная здесь, может оказаться неполной или неверной.

Если вы считаете, что её стоило бы доработать как можно быстрее, пожалуйста, скажите об этом.


Содержание

[править] IPython в качестве системной оболочки

IPython можно использовать в качестве системной оболочки.

Для этого нужно сделать вызов с соответствующим профилем:

%$ ipython -p sh

В оболочке доступна гремучая смесь из языка python, расширений ipython и команд Unix.

Если к этому прикрутить ещё и ipipe, то получится шелл с возможностью передачи через каналы не потока текста, а потока объектов (ну прямо PowerShell да и только!).

Дополнительная информация:

[править] Вызов IPython из кода программы

Чтобы войти в сердце программы на питоне и посмотреть, что там делается, вы можете использовать ipython:

В том месте, куда вы хотите попасть:

(для новых версий IPython)

from IPython import embed
embed()

(для более старых версий)

from IPython.Shell import IPShellEmbed
ipshell = IPShellEmbed([])
ipshell()

Будет видно то пространство имён, в котором происходит вызов ipython (embed() или ipshell()).

Можно оформить вызов в виде функции, но тогда нужно не забыть передать в функцию локальные переменные:

def ipython(*kvargs, **kwargs):
    import inspect
    for (k,v) in kwargs.items():
        inspect.stack()[0][0].f_locals[k] = v
    from IPython import embed
    embed()

Ну и потом, когда нужно передать переменные:

ipython(**locals())

Для удалённого подключения:

Сервер:

$ ipython kernel &

Клиент:

$ ipython console ... 

Ещё интересные материалы по теме:

[править] IPython Notebook

[править] Интеграция с JavaScript

Полноценной интеграции пока нет, она запланирована на IPython 2.0, но что уже сейчас можно делать, это:

var kernel = IPython.notebook.kernel;
kernel.execute(command);

В результате команда command выполнится на ядре IPython.

Этого достаточно чтобы передавать данные из браузера в ядро; для обратной передачи используется коллбек в kernel.execute:

var kernel = IPython.notebook.kernel;
function callback(out_type, out_data){
    // do_something
}
kernel.execute(command, {"output": callback});

Подробнее об этом:

http://jakevdp.github.io/blog/2013/06/01/ipython-notebook-javascript-python-communication/

[править] Вопросы и ответы

[править] Как скроллить большой вывод в ipython?

Полностью ipython это пока не умеет. Просмотреть содержимое объекта можно так:

: %page object

Но вывод, например, функции или конструкции так не просмотришь (пока что[1]). Нужно сначала её вызвать, а потом просмотреть результат:

[]: function_a()
[]: %page _

Другой вариант — использовать GNU Screen или что-нибудь подобное.


[править] Дополнительная информация

[править] Примечания

  1. http://mail.scipy.org/pipermail/ipython-user/2011-February/007384.html
Источник — «http://xgu.ru/wiki/IPython»