Как настроить и работать с 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для дополнительных возможностей анализа кода