Как использовать IPython в качестве моего интерпретатора Emacs Python?

Я запускаю Emacs 22.1.1 и IPython 0.9.1 в OS X, и я хотел бы иметь возможность запускать строки/методы/фрагменты кода Python из моего текущего буфера по требованию внутри интерпретатора IPython.

Что мне нужно сделать, чтобы это сработало?

Ответ 1

также ipython не загружается с официальным python.el, используемым с emacs 23.1.1

Ответ 2

Эта версия emacs для mac:

http://emacsformacosx.com

поставляется с предустановленным пакетом. Это позволяет автоматически устанавливать пакеты emacs. Существует пакет под названием ein:

http://tkf.github.io/emacs-ipython-notebook/

что позволяет легко взаимодействовать с ipython от emacs (включая ноутбуки).

Однако, начиная с версии 24.3 emacs выше, ein не находится в репозитории пакетов по умолчанию. Если вы добавите больше репозиториев, выполните следующие действия:

http://www.emacswiki.org/emacs/ELPA

i.e., добавьте это в свой файл ~/.emacs:

(setq package-archives '(("gnu" . "http://elpa.gnu.org/packages/")
                     ("marmalade" . "http://marmalade-repo.org/packages/")
                     ("melpa" . "http://melpa.milkbox.net/packages/")))

затем вызовите

M-x package-refresh-contents

теперь вы сможете добавить ein с помощью

M-x package-install <ret> ein

Увы, версия MELPA ein не работает с ipython > 1.x, поэтому, если вы используете ipython 2.x, вам нужна более новая сборка ein:

https://github.com/tkf/emacs-ipython-notebook/issues/137

поэтому клонировать:

git clone https://github.com/millejoh/emacs-ipython-notebook.git

скопируйте подкаталог lisp где-нибудь разумный:

cp -r emacs-ipython-notebook/lisp ~/.emacs.d/einv2

затем добавьте его в свой путь загрузки emacs и загрузите его, добавив это в свой файл ~/.emacs:

(add-to-list 'load-path "~/.emacs.d/einv2")
  (require 'ein)

наконец, избавиться от старого ein, который оставит зависимые места:

M-x package-list-packages

выделите ein в списке пакетов, затем:

M-x package-menu-mark-delete
M-x package-menu-execute

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

M-x ein:notebooklist-open

Ответ 3

python-mode.el поддерживает IPython изначально.

Просто убедитесь, что shebang не указывает на другого интерпретатора.

В этом случае:

  • либо вызовите команду с завершением "-ipython", которая будет переопределять shebang
  • настройте "ipython" как интерпретатор по умолчанию и установите "py-force-py-shell-name-p". Это можно сделать также через меню Python/.../переключатели