Як створити надійний Python IDE з Emacs (як редактор тексту)


56

Emacs є чудовим редактором - однак, як кажуть, " для програмування вам спочатку потрібна IDE " - так як би ви створили IDE у широко налаштованому Emacs для PYTHON з усіма можливостями сучасного IDE. Я хочу мати можливість налагоджувати, запускати та компілювати та керувати кодом. Поки я читав з цього питання, що я встановив пакет Elpy, але не знаю, що ще потрібно знати і робити, щоб зробити це можливим.


4
Не могли б ви бути більш конкретними? "IDE" перетворився на метушник та мішок для різних видів.
wasamasa

Я думаю, ви новачок у Emacs, і ви, можливо, захочете ознайомитися з моїм посібником Helm and Helm Projectile .
Tu Do

2
Пошук Google для «EMACS пітона язя» дає достатню кількість влучень. Чи можете ви пояснити, що ви вже пробували, а що ще не задовільно?
Дан

1
Я голосую, щоб закрити це питання поза темою, оскільки воно занадто широке.
Дрю

4
ІДЕ можуть бути корисними, але "для програмування вам спочатку потрібна IDE" - це просто нерозумно. Багато хорошого коду було написано ще до того, як з'явилися IDE.
offby1

Відповіді:


57

Режим Python за замовчуванням у Emacs має ряд особливостей, включаючи завершення коду на основі нижчої оболонки Python, так що його можна використовувати як базовий IDE без додавання будь-яких пакетів. Ви також можете використовувати інші основні функції Emacs з Python. Наприклад, M-x compile/ M-x recompileможна використовувати для запуску тестів. M-x pdbможе запустити налагоджувач Python, і він інтегрується з gud середовищем Emacs, щоб ви фактично отримали вбудовані точки прориву.

Щоб розширити це, існують три основні пакети для Emacs, які намагаються реалізувати більш функціональний Python IDE (в алфавітному порядку):

Всі вони забезпечують приблизно однакові можливості:

  • Завершення коду з використанням автоматичного заповнення або режиму компанії
  • Навігація по коду, тобто перейти до визначення / звичаїв
  • Функція відображення підпису за допомогою ElDoc
  • Інтроспекція документації на символі в точці
  • Перевірки синтаксису за допомогою маховика або флешки
  • А деякі з них (принаймні Елпі) мають базову підтримку рефакторингу

Крім цього, Emacs також може допомогти вам у великій кількості робочих процесів, але він не призначає жодного жодного. Тож наступні кроки багато в чому залежать від того, як ви використовуєте Python. Найкращим підходом тут було б визначити хороший робочий процес Python, а потім спробувати знайти пакети Emacs, які допоможуть вам конкретно виконати кроки на вашому робочому процесі.

Наприклад, є кілька пакунків для роботи з virtualenvs (Elpy, який ви згадуєте, постачається з pyvenv), який ви, ймовірно, повинні використовувати. Emacs-Jedi має супровідний режим для перегляду кодів, який може бути корисним. Якщо ви багато використовуєте IPython, є ноутбук IPython для Emacs. Існують спеціальні режими підтримки для розробки Django тощо. - Ви можете зайти на http://melpa.org/ і пошукати Python, щоб отримати кілька ідей.

Поза межами Python, ви можете скористатися додатковими пакунками Emacs, які допомагають в цілому розвиватися. Projectile - це загальний пакет для управління проектами, який надає вам ряд цікавих функцій, наприклад пошук у проекті або переміщення між тестами та реалізаціями. Якщо він ще не встановлений як залежність від вибраного вами пакета IDE, ви також можете використовувати YASnippet, який забезпечує інтелектуальні фрагменти для генерації коду. Колекція фрагментів за замовчуванням також містить велику кількість фрагментів для Python.

Але знову ж таки, основні пакети IDE, наведені вище, дадуть вам здорове середовище - наступні кроки значною мірою залежать від ваших конкретних робочих процесів.

(Повне розкриття: я автор Elpy, тому врахуйте це, читаючи вище.)


1
Дякую вам дуже за таку всебічну відповідь, вона виявилася надзвичайно корисною тим, що незліченні статті не мають.
Серійний обмінник

2
Дякую @Jorgen Я використовую elpyщодня і у мене є швидке запитання щодо вашої відповіді, коли ви говорите, що " M-x pdbможна запустити налагоджувач Python" , як це саме? У мене буфер Python, і коли я це роблю, M-x pdbя отримую підказку в minibuffer, що говорить "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
Амеліо Вацкес-Рейна

1
Pdb поставляється з Python. Я поняття не маю, чому його не знайшли, боюся. :-(
Йорген Шефер

@ JorgenSchäfer, якщо pdbвін не знайдений, але pythonзнайдений локально, тоді можна запустити pdb, використовуючи M-x pdbпотім "Запустити pdb (як це): python -m pdb my_file.py`
ChrisFreeman

Я також вважаю пакет сфінксів-doc корисним для написання документів.
aadcg

17

Я б закликав користувачів зла-emacs спробувати spacemacs .

Він має блискучий пітон-шар, детальну інформацію можна переглянути тут: https://github.com/syl20bnr/spacemacs/tree/master/layers/!lang/python

На сьогоднішній день він включає:

  • Автозавершення в режимі анаконди
  • Навігація кодом у режимі анаконди
  • Пошук документації з використанням режиму анаконди та пілокупу
  • Тест-бігун за допомогою носа.el або pytest
  • Віртуальне середовище з використанням pyvenv
  • Семантичний режим увімкнено
  • Підтримка Django через поні

Установка смішно проста, просто додайте наступний рядок до свого ~/.spacemacs:

(setq-default dotspacemacs-configuration-layers '(python))

з цікавості, де саме в .spacemacs я повинен додати це? це самий верх? до (defun dotspacemacs / layer () ...?
user391339

Є список, який називається dotspacemacs-configuration-layers. Додайте його туди :)
The Unfun Cat

4

Я використовую цільовий режим . Це дозволяє визначити досить надійне середовище.

Використовуючи elpy, pydocі у neotreeмене досить міцне середовище (в тому сенсі, що Windows не робить дивних речей при помилках). Це також може добре працювати з gud-pdbналагодженням.

налаштування emacs для python з neotree, python-mode, pydoc та нижчим python (через elpy)


4

Ось вичерпний посібник: http://wikemacs.org/wiki/Python У ньому перераховані готові до використання рішення ( стартовий комплект Prelude , Spacemacs, рішення для даних ), а також великі корисні пакети (Elpy), а також як і кожен пакунок, необхідний для поліпшення вашого оточення. Ось огляд .

Рефакторинг

Це найбільш "особливість IDE". Emacs як деякі можливості для цього завдяки бібліотеці Rot python. Виявляється, найпростішим способом встановлення та використання є пакет emacs-traad в MELPA. Він включає, серед іншого:

  • змінити підпис методу: додавання / видалення аргументу, перехресний проект рефакторингу (звичайно),
  • перейменуйте що-небудь,
  • знайти визначення,…

Мотузка також входить до складу Elpy.

Простіша маніпуляція кодом

У нас є більш прості інструменти, які допомагають рефакторингу або маніпуляції кодом: http://wikemacs.org/wiki/Python#Other_Python_.22refactoring.22_tools

Наприклад, Projectile чудовий (див. Інші відповіді), у нас також є інструмент для додавання декораторів , додавання / видалення / редагування аргументів , перейменування / копіювання / коментарів / вбити метод, інструмент для генерації коду,…

Навігація по коду

Ми можемо орієнтуватися як IDE з тегами та cscope: знаходити функції, що викликають цю, знайти випадки тощо.

У Emacs також є чудові пакети, такі як ime (helm-ime), helm-swoop (інтерактивний греп у буфері), emacs-helm-ag (інтерактивний пошук срібла в проекті) тощо.

Запуск тестів

Саме Elpy надає хорошу підтримку для запуску тестів (з бігуном django, elpy чи іншим). Навіть ми можемо запустити тільки тестовий пристрій, який ми зараз перебуваємо: дуже зручно! Таким чином, є Hydra, щоб допомогти у цьому (клацання між помилками, переключиться на запит python…).

Зробіть підтримку

Це пакет Emacs, не характерний для Python. Але мені подобається мати змогу запустити цільовий показник з будь-якої точки проекту та вибрати команду make із завершенням . посилання

Справа з відступом

Існує невеликий пакет інструментів з відступом, який дає команди для роботи безпосередньо з відступним блоком: перейдіть до наступного попереднього дочірнього блоку відступу, відступ / деіндент / коментар / копія / вбивство / складіть поточний блок , Ідеально підходить для ямлів, а також для Python. Демонстрація doc та gif

Підтримка Джанго

див. Джанго . Elpy підтримує бігун джанго . Дивіться елпі джанго док . у режимі django (у melpa) є виділення шаблонів, швидкі команди, завершення команд управління ,…

Також важливо: чудова підтримка Git, Github та Gitlab

magithub може створювати PR-програми github, ми можемо отримувати проблеми та вставляти їх посилання у повідомлення про фіксацію, magit - це чудово,… див. http://wikemacs.org/wiki/Git


Особливо важливо, щоб у великих та / або розпорошених проектах рефакторинг дуже важливий, щоб щось не порушити. Хтось знає, як налаштувати emacs-traad за допомогою Spacemacs?
thinwybk

1

Відповіді тут надають більшість важливих функцій, які надає spacemacs, але завжди була одна функція, про яку я не міг знайти - DEBUGGING (я не знайшов пристойних інструментів налагодження, які добре поєднуються з Spacemacs ще зовсім недавно)

Тож як я встановив робочий процес налагодження для своїх spacemacs?

У розробці є гілка функцій, яка використовує пакет realgud.el, щоб забезпечити близькість до IDE, як досвід налагодження у spacemacs: https://github.com/CeleritasCelery/spacemacs Все, що вам потрібно зробити, - це перетягнути цю гілку у ваші .emacs. d каталог і внести деякі зміни у ваш файл ~ / .emacs.d / layer / + lang / python / пакети.el

Детальні кроки для налаштування пробілів для налагодження (зробіть глибокий вдих)

  1. Введіть наведені нижче команди у своєму терміналі по черзі. Це додасть змін у пробілах CeleritaCelery в окрему гілку, що називається "налагоджувальний шар". Це означає, що якщо що-небудь зіпсується, ви завжди можете перевірити головну гілку та вуаля! ваші оригінальні космоси повернулися!

remote add debug-layer https://github.com/CeleritasCelery/spacemacs fetch debug-layer checkout --track debug-layer/debug-layer branch -a

  1. Тепер відкрийте ~ / .emacs.d / layer / + lang / python / пакети.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.

  2. Тепер відкрийте файл .spacemacs та шар «налагодження» всередині шарів dotspacemacs-config, як це dotspacemacs-configuration-layers '( (python :variables python-enable-yapf-format-on-save t flycheck-disabled-checkers '(python-flake8) flycheck-checker 'python-pylint ) debug )

  3. Потім перезапустіть spacemacs та відкрийте будь-який файл python. Ви можете почати налагодження, ввівши Mx realgud: trepan3k

Це запустить сеанс налагодження , і ви можете додавати, видаляти точки зупину з допомогою realgud комбінації клавіш описані тут: https://github.com/realgud/realgud#source-window-commands

Ви закінчили!


Відповідь Клитона вище, git repo має бути github.com/CeleritasCelery/debug-layer . PR для цього наразі відкритий на веб-
Oddbodbloke

(Я не можу коментувати через відсутність репутації) Вищезазначене було об'єднано у галузь розробки космічних маків, тому перший крок можна ігнорувати.
Oddbodbloke
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.