Как настроить и работать с Python в Emacs?

Полное руководство по настройке Elpy и работе с Python-проектами в Emacs

Установка и базовая настройка

1. Установка необходимых пакетов

Добавьте в ваш .emacs или init.el:

;; Активация Elpy
(use-package elpy
  :ensure t
  :init
  (elpy-enable))

;; Дополнительные зависимости
(use-package flycheck
  :ensure t)

(use-package py-autopep8
  :ensure t)

2. Установка системных зависимостей

Выполните в терминале:

pip install jedi flake8 autopep8 black

Основные горячие клавиши

Комбинация Описание
C-c C-c Выполнить текущий буфер
C-c C-z Открыть Python shell
C-c C-r Выполнить выделенный регион
C-c C-f Форматировать код (autopep8)
C-c C-d Показать документацию
M-. Перейти к определению
M-, Вернуться назад
C-c C-t Запустить тест
C-c C-e Открыть список ошибок (flycheck)

Настройка окружения

1. Работа с виртуальными окружениями

;; Настройка работы с virtualenv
(setq elpy-rpc-virtualenv-path 'current)  ;; Использовать текущее virtualenv

Для активации virtualenv в Emacs:

  1. M-x pyvenv-activate
  2. Выберите путь к virtualenv

2. Настройка интерпретатора

(setq python-shell-interpreter "python3"
      python-shell-interpreter-args "-i")

Рабочий процесс с Python-проектом

1. Создание нового проекта

  1. M-x elpy-config - проверьте, что все зависимости установлены
  2. C-x f - откройте или создайте новый .py файл
  3. M-x elpy-project-root - установите корень проекта

2. Структура проекта

Elpy автоматически создает:

  • .projectile - файл для projectile
  • setup.py - если создаете пакет

Рекомендуемая структура:

project_root/
├── .git/
├── src/
│   ├── __init__.py
│   ├── module1.py
│   └── module2.py
├── tests/
├── requirements.txt
└── setup.py

3. Написание кода

  • Автодополнение работает автоматически после import
  • Для принудительного обновления: M-x elpy-rpc-restart
  • Используйте M-x elpy-company-backend для управления бекендами автодополнения

4. Рефакторинг

;; Настройка рефакторинга
(use-package srefactor
  :ensure t
  :config
  (define-key python-mode-map (kbd "M-RET") 'srefactor-refactor-at-point))

Доступные операции:

  • Переименование переменной
  • Извлечение метода
  • Изменение сигнатуры функции

5. Отладка

  1. Установите pip install epc
  2. Добавьте в конфигурацию:
(use-package realgud
  :ensure t)

Основные команды:

  • M-x realgud:pdb - запуск отладчика
  • C-c C-b - установить точку останова
  • n - следующая строка
  • s - шаг внутрь функции
  • c - продолжить выполнение

Интеграция с другими инструментами

1. Jupyter Notebook

(use-package ein
  :ensure t)

Использование:

  1. M-x ein:notebooklist-open
  2. Выберите или создайте notebook
  3. C-c C-c - выполнить ячейку

2. Тестирование

;; Настройка pytest
(setq elpy-test-runner 'elpy-test-pytest-runner)

Команды:

  • C-c C-t t - запустить тест
  • C-c C-t m - запустить тесты модуля
  • C-c C-t p - запустить все тесты проекта

3. Форматирование кода

;; Настройка black
(setq elpy-formatter 'black)

Используйте C-c C-f для форматирования текущего буфера.

Продвинутые настройки

1. Настройка flycheck

(setq flycheck-python-flake8-executable "flake8"
      flycheck-python-pylint-executable "pylint"
      flycheck-checker-error-threshold 1000
      flycheck-python-mypy-executable "mypy")

2. Интерактивная разработка

;; Настройка интерактивного Python
(setq python-shell-interpreter "ipython"
      python-shell-interpreter-args "-i --simple-prompt")

3. Работа с документацией

(use-package eldoc
  :config
  (setq eldoc-idle-delay 0.4))

Решение проблем

1. Elpy не загружается

Проверьте:

  1. M-x elpy-config - все ли зависимости установлены
  2. M-x elpy-rpc-restart - перезапустите RPC сервер

2. Нет автодополнения

  1. Убедитесь, что установлен jedi: pip install -U jedi
  2. Проверьте M-x elpy-company-backend

3. Медленная работа

(setq elpy-rpc-timeout 10
      elpy-rpc-large-buffer-size 102400)

Заключение

Elpy предоставляет полноценную среду разработки для Python в Emacs. После настройки вы получаете:

  1. Интеллектуальное автодополнение
  2. Интегрированную отладку
  3. Поддержку тестирования
  4. Инструменты рефакторинга
  5. Интерактивную разработку

Для максимальной эффективности рекомендуется использовать в сочетании с:

  • magit для контроля версий
  • projectile для навигации по проекту
  • lsp-mode для дополнительных возможностей анализа кода