IPython
Материал из Xgu.ru
Содержание |
[править] IPython в качестве системной оболочки
IPython можно использовать в качестве системной оболочки.
Для этого нужно сделать вызов с соответствующим профилем:
%$ ipython -p sh
В оболочке доступна гремучая смесь из языка python, расширений ipython и команд Unix.
Если к этому прикрутить ещё и ipipe, то получится шелл с возможностью передачи через каналы не потока текста, а потока объектов (ну прямо PowerShell да и только!).
Дополнительная информация:
- IPython as a system shell (англ.)
[править] Вызов 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 или что-нибудь подобное.
[править] Дополнительная информация
- Домашняя страница IPython (англ.)
- Документация по IPython (англ.)
- IPython User Manual (англ.)
- Introducing IPython (англ.)
- Enhanced Interactive Python with IPython (англ.)
- ipython qucki sheet (англ.)
- http://ipython.scipy.org/moin/Documentation (англ.)
- IPython: a system for Interactive Scientific Computing (англ.) — ещё про iPython