Pull to refresh

Emacs как IDE для Python

Reading time 3 min
Views 38K
Как известно, существует множество решений которые позволяют сделать из «консольного» редактора (vim/emacs) более-менее удобную IDE для языка Python. Представляю Вашему вниманию наиболее успешную, на мой взгляд, реализацию среды разработкы в редакторе emacs на основе пакета python-jedi.el. Отмечу, что бандл заменяющий rope(*-jedi) есть так же для vim, инстукцию по его настройке можно найти здесь .

image

1. Подготовка к настройке


Для настройки emacs следует знать о стандартном конфигурационном файле, который располагается в ~/.emacs и директории ~/.emacs.d куда мы будем добавлять плагины.
Так же следует ознакомиться с сокращениями и обозначений «горячих» клавиш. Таких как C(по-умолчанию Ctrl) и Meta(по-умолчанию Alt). Так же существуют определенные правила при написании комбинаций клавиш, так, например: C-h t Данная команда означает, что надо одновременно нажать Ctrl и h, отпустить, затем t. Полный список «горячих» клавиш.
После того как разобрались с основными клавишами и порядком их использования, можно приступать к превращению редактора в IDE.

2. Необходимые пакеты


Конечно, кроме python-jedi нам понадобятся еще такие пакеты как:
  • auto-complete: интерактивное авто-дополнение;
  • autopair: авто-закрытие кавычек и скобок;
  • flycheck: проверка синтаксиса;
  • ido-settings.el: интерактивное управление буферами и файлами;
  • ipython: интеграция с мощной интерактивной оболочкой python;
  • linum-mode: нумерация строк;

Сам же python-jedi, является расширенным авто-дополнением кода, т.е. в отличие от auto-complete, он умеет дополнять еще и тот код который вы еще не вводили в данном файле, например — дополнение импорта

2.1 Установка пакетов в Emacs-24

Для простой и быстрой установки пакетов в emacs лучше всего воспользоваться ELPA (Emacs Lisp Package Archive), для этого необходимо в конфиг-файл .emacs добавить репозитории и определить директорию откуда будут подгружаться модули
(add-to-list 'load-path "~/.emacs.d/")
(load "package")
(require 'package)
(setq package-archives '(("gnu" . "http://elpa.gnu.org/packages/")
                         ("marmalade" . "http://marmalade-repo.org/packages/")
                          ("melpa" . "http://melpa.milkbox.net/packages/")))


После этого можно получить список
M-x: package-list-packages

и преступить к установке пакетов auto-complete, autopair, flycheck, ipython
M-x: package-install

Однако, кроме package существует решение el-get, отличительной особенностью которого яляется умение автоматически докачивать зависимости. Для установки el-get перейдите в буфер *scratch* (C-x b) и вставьте следующие строки:
(url-retrieve
 "https://raw.github.com/dimitri/el-get/master/el-get-install.el"
 (lambda (s)
   (let (el-get-master-branch)
     (goto-char (point-max))
     (eval-print-last-sexp))))

затем нажмите C-j (это выполнит код), после этого добавляем в конфиг директорию el-get c условием перезакачки скрипта
(add-to-list 'load-path "~/.emacs.d/el-get/el-get")
(unless (require 'el-get nil 'noerror)
  (with-current-buffer
      (url-retrieve-synchronously
       "https://raw.github.com/dimitri/el-get/master/el-get-install.el")
    (let (el-get-master-branch)
      (goto-char (point-max))
      (eval-print-last-sexp))))
(el-get 'sync)

Т.к. пакет ido уже присутствует в emacs 24, то просто активируем его через .emacs:
(require 'ido)
(ido-mode t)


2.2 Установка jedi

Для корректной работы python-jedi необходим python-модуль virtualenv, в большинстве ОС, по-умолчанию, он отсутствует, устанавливаем через pip:
pip install virtualenv

M-x: el-get-install jedi

После этого в конфигурационный файл добавляем
(add-hook 'python-mode-hook 'auto-complete-mode)
(add-hook 'python-mode-hook 'jedi:ac-setup)


2.2 Навигация по проекту

Для передвижения по директории проекта, предлагается использовать emacs-nav
M-x: el-get-install emacs-nav

image

3. Дополнительные пакеты


Дополнительно можно установить модуль для автоматического подсвечивания ошибок и автоматического закрытия кавычек и скобок.Правим .emacs:
(add-hook 'after-init-hook #'global-flycheck-mode)

(require 'autopair)
(autopair-global-mode) 

Отмечу, что последний (autopair) может создать очень много скобок или кавычек при копи-пасте, для отключения оного следует удалить две последние строчки.
Для того, что бы использовать ipython как оболочку по-умолчанию, добавляем строчки
(setq-default py-shell-name "ipython")
(setq-default py-which-bufname "IPython")


Заключение


Вот и все, из простого редактора мы получили, по функциональным возможностям, IDE с собственным менеджером пакетов и возможностью расширения.
image
Спасибо всем кто дочитал до конца.
Tags:
Hubs:
+7
Comments 7
Comments Comments 7

Articles