Как настроить и работать с Python в Emacs?
Полное руководство по настройке Elpy и работе с Python-проектами в Emacs
Categories:
Установка и базовая настройка
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:
M-x pyvenv-activate
- Выберите путь к virtualenv
2. Настройка интерпретатора
(setq python-shell-interpreter "python3"
python-shell-interpreter-args "-i")
Рабочий процесс с Python-проектом
1. Создание нового проекта
M-x elpy-config
- проверьте, что все зависимости установленыC-x f
- откройте или создайте новый .py файлM-x elpy-project-root
- установите корень проекта
2. Структура проекта
Elpy автоматически создает:
.projectile
- файл для projectilesetup.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. Отладка
- Установите
pip install epc
- Добавьте в конфигурацию:
(use-package realgud
:ensure t)
Основные команды:
M-x realgud:pdb
- запуск отладчикаC-c C-b
- установить точку остановаn
- следующая строкаs
- шаг внутрь функцииc
- продолжить выполнение
Интеграция с другими инструментами
1. Jupyter Notebook
(use-package ein
:ensure t)
Использование:
M-x ein:notebooklist-open
- Выберите или создайте notebook
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 не загружается
Проверьте:
M-x elpy-config
- все ли зависимости установленыM-x elpy-rpc-restart
- перезапустите RPC сервер
2. Нет автодополнения
- Убедитесь, что установлен jedi:
pip install -U jedi
- Проверьте
M-x elpy-company-backend
3. Медленная работа
(setq elpy-rpc-timeout 10
elpy-rpc-large-buffer-size 102400)
Заключение
Elpy предоставляет полноценную среду разработки для Python в Emacs. После настройки вы получаете:
- Интеллектуальное автодополнение
- Интегрированную отладку
- Поддержку тестирования
- Инструменты рефакторинга
- Интерактивную разработку
Для максимальной эффективности рекомендуется использовать в сочетании с:
magit
для контроля версийprojectile
для навигации по проектуlsp-mode
для дополнительных возможностей анализа кода