Emacs - отличный редактор - однако говорят, что « для программирования вам сначала нужна IDE », - как бы вы встроили IDE в широко настраиваемый Emacs для PYTHON со всеми функциями современной IDE. Я хочу иметь возможность эффективно отлаживать, запускать, компилировать и управлять кодом. До сих пор я читал тему, по которой установил пакет Elpy, но не уверен, что еще нужно знать и делать, чтобы это стало возможным.
56
Ответы:
Режим Python по умолчанию в Emacs имеет ряд функций, включая завершение кода на основе нижней оболочки Python, поэтому его можно использовать в качестве базовой IDE без каких-либо добавленных пакетов. Вы также можете использовать другие основные функции Emacs с Python. Например,
M-x compile
/M-x recompile
можно использовать для запуска тестов.M-x pdb
может запускать отладчик Python, и он интегрируется с окружением Emacs, так что вы фактически получаете встроенные точки останова.Чтобы расширить это, есть три основных пакета для Emacs, которые пытаются реализовать более функциональную среду Python IDE (в алфавитном порядке):
Все они предоставляют примерно одинаковые функции:
Помимо этого, Emacs также может помочь вам с множеством рабочих процессов, но он не предписывает ни одного. Поэтому следующие шаги во многом зависят от того, как вы используете Python. Наилучшим подходом здесь было бы выяснить хороший рабочий процесс Python, а затем попытаться найти пакеты Emacs, которые конкретно помогут вам с шагами в вашем рабочем процессе.
Например, есть несколько пакетов для работы с virtualenvs (Elpy, о котором вы упоминаете, поставляется с pyvenv), который вы, вероятно, должны использовать. Emacs-Jedi имеет сопутствующий режим для просмотра кода, который может быть полезен. Если вы часто используете IPython, для Emacs есть Notebook для IPython . Существуют специальные режимы поддержки для разработки Django и т. Д. - вы можете зайти на http://melpa.org/ и поискать Python, чтобы получить некоторые идеи.
За пределами Python вы можете воспользоваться некоторыми дополнительными пакетами Emacs, которые помогают в разработке в целом. Projectile - это универсальный пакет для управления проектами, который предоставляет ряд интересных функций, таких как поиск в проекте или переход между тестами и реализациями. Если он еще не был установлен как зависимость от выбранного вами пакета IDE, вы также можете использовать YASnippet, который предоставляет интеллектуальные фрагменты для генерации кода. Коллекция фрагментов по умолчанию также содержит большое количество фрагментов для Python.
Но опять же, основные пакеты IDE, приведенные выше, обеспечат вам нормальную среду - следующие шаги в значительной степени зависят от ваших конкретных рабочих процессов.
(Полное раскрытие: я автор Elpy, поэтому примите это во внимание при прочтении выше.)
источник
elpy
ежедневно и у меня есть быстрый вопрос о вашем ответе, когда вы говорите, что «M-x pdb
можете запустить отладчик Python» , как это точно? У меня есть буфер Python, и когда я делаю,M-x pdb
я получаю подсказку в минибуфере с надписью"Run pdb (like this): pdb my_file.py"
. Когда яRET
нажимаю, я получаю «ImportError: Ни один модуль с именем pdb.pdb:« pdb не является пакетом ». Это с последней версией PYthon 3.4 после простого обновления pdb с помощью pip, что дает мне:$ pip freeze | grep pdb => pdb==0.1
pdb
не найден, ноpython
найден локально, то вы можете запустить pdb, используяM-x pdb
затем «Запустить pdb (например, так): python -m pdb my_file.py`Я бы посоветовал злым пользователям emacs попробовать spacemacs .
Он имеет блестящий слой Python, подробности смотрите здесь: https://github.com/syl20bnr/spacemacs/tree/master/layers/!lang/python
На данный момент, это включает в себя:
Установка до смешного проста, просто добавьте следующую строку в ваш
~/.spacemacs
:источник
dotspacemacs-configuration-layers
. Добавьте это туда :)Я использую режим цели . Это позволяет определить довольно устойчивую среду.
Использование
elpy
,pydoc
иneotree
у меня довольно надежная среда (в том смысле, что окна не делают странных вещей при ошибках). Это также может очень хорошо работатьgud-pdb
для отладки.источник
Вот исчерпывающее руководство: http://wikemacs.org/wiki/Python В нем перечислены готовые решения ( стартовый набор Prelude , Spacemacs, решения для науки о данных …), а также большие полезные пакеты (Elpy), а также Как и каждый пакет, вам нужно улучшить свою среду. Вот обзор .
Рефакторинг
Это самая «специфичная для IDE» функция. Emacs как некоторые возможности у него благодаря библиотеке Python Rope. Оказывается, самый простой способ установки и использования - это пакет emacs-traad в MELPA. Он включает в себя, среди прочего:
Веревка также входит в Elpy.
Упрощенная манипуляция с кодом
У нас есть более простые инструменты для рефакторинга или манипулирования кодом: http://wikemacs.org/wiki/Python#Other_Python_.22refactoring.22_tools
Например, Projectile великолепен (см. Другие ответы), у нас также есть инструмент для добавления декораторов , добавления / удаления / редактирования аргументов , переименования / копирования / комментирования / уничтожения метода, инструмента для генерации кода,…
Кодовая навигация
Мы можем перемещаться как IDE с тегами и cscope: найти функции, вызывающие эту функцию, найти события и т. Д.
В Emacs также есть отличные пакеты, такие как imenu (helm-imenu), helm-swoop (интерактивный grep в буфере), emacs-helm-ag (интерактивный поисковик серебра в проекте) и т. Д.
Запуск тестов
Именно Elpy обеспечивает хорошую поддержку для запуска тестов (с бегуном django, elpy или другим). Мы даже можем запустить только тот модульный тест, в котором мы сейчас находимся: очень удобно! Таким образом, есть Hydra, чтобы помочь с этим (переход между ошибками, переключение на приглашение Python ...).
Сделать поддержку
Это пакет Emacs, не относящийся к Python. Но мне нравится, когда я могу запустить цель make из любой точки проекта и выбрать команду make с завершением . ссылка
Имея дело с отступом
Есть небольшой пакет, indent-tools , который дает команды для работы непосредственно с блоком с отступом: перейти к блоку отступа next-previous-child-parent, indent / deindent / comment / copy / kill / fold текущего блока , и т.д. Идеально подходит для yaml, а также для Python. Doc и GIF демо
Поддержка Django
увидеть Джанго . Элпи поддерживает Джанго . Смотри elpy django doc . django-mode (в melpa) имеет подсветку шаблонов, быстрые команды, завершение команд управления ,…
Также важно: отличная поддержка Git, Github и Gitlab
magithub может создавать PR на github, мы можем извлекать проблемы и вставлять их ссылки в сообщения о коммитах , magit отлично,… смотрите http://wikemacs.org/wiki/Git
источник
Ответы здесь предоставили большинство важных функций, которые предоставляет spacemacs, но всегда была одна особенность, о которой я не мог найти - отладка (я не нашел каких-либо приличных инструментов отладки, которые бы хорошо работали с spacemacs до недавнего времени)
Итак, как я настроил рабочий процесс отладки для своих spacemacs?
Существует разрабатываемая ветвь функций, которая использует пакет realgud.el для предоставления возможности, близкого к IDE, например, отладки в spacemacs: https://github.com/CeleritasCelery/spacemacs Все, что вам нужно сделать, это вставить эту ветку в ваш .emacs. d и внесите некоторые изменения в ваш файл ~ / .emacs.d / Layers / + lang / python / packages.el
Подробные шаги по настройке spacemacs для отладки (сделайте глубокий вдох)
remote add debug-layer https://github.com/CeleritasCelery/spacemacs fetch debug-layer checkout --track debug-layer/debug-layer branch -a
Теперь откройте ~ / .emacs.d / layer / + lang / python / packages.el и добавьте указанную ниже функцию в конец файла.
;; configure trepan3k as the python debugger to be used with realgud (defun python/pre-init-realgud() (dolist (mode '(anaconda-mode)) ;; bind trepan3k with anaconda mode (spacemacs|add-realgud-debugger mode "trepan3k")))
Эта функция использует отладчик trepan3k в качестве отладчика python. Вы можете изменить значение на pdb или ipdb или любой другой отладчик, который вам нравится. Если вы планируете использовать trepan3k, убедитесь, что вы установили его с pip, такsudo pip install trepan3k
как он не поставляется предварительно установленным с вашим дистрибутивом python.Теперь откройте ваш файл .spacemacs и слой «debug» внутри слоев dotspacemacs-configuration-layer следующим образом
dotspacemacs-configuration-layers '( (python :variables python-enable-yapf-format-on-save t flycheck-disabled-checkers '(python-flake8) flycheck-checker 'python-pylint ) debug )
Это запустит сеанс отладки, и вы можете добавлять, удалять точки останова, используя привязки клавиш realgud, описанные здесь: https://github.com/realgud/realgud#source-window-commands
Вы сделали!
источник