Emacs adalah editor yang sangat baik - namun dikatakan " untuk memprogram Anda pertama-tama membutuhkan IDE " - jadi bagaimana Anda membangun IDE dalam Emacs untuk PYTHON yang dapat disesuaikan secara luas dengan semua fitur IDE modern. Saya ingin dapat secara efektif men-debug, menjalankan dan mengkompilasi, dan mengelola kode. Sejauh ini saya telah membaca tentang subjek saya telah menginstal paket Elpy tetapi tidak yakin apa lagi yang perlu diketahui dan dilakukan untuk dapat membuat ini mungkin.
56
Jawaban:
Mode Python default di Emacs memiliki sejumlah fitur, termasuk penyelesaian kode berdasarkan shell Python inferior, sehingga dapat digunakan sebagai IDE dasar tanpa paket tambahan. Anda dapat menggunakan fungsi inti Emacs lainnya dengan Python juga. Sebagai contoh,
M-x compile
/M-x recompile
dapat digunakan untuk menjalankan tes.M-x pdb
dapat menjalankan debugger Python, dan itu terintegrasi dengan lingkungan gud Emacs sehingga Anda benar-benar mendapatkan breakpoint sebaris.Untuk memperluasnya, ada tiga paket utama untuk Emacs yang mencoba mengimplementasikan IDE Python yang lebih berfitur (dalam urutan abjad):
Mereka semua menyediakan fitur yang kira-kira sama:
Di luar ini, Emacs juga dapat membantu Anda dengan banyak alur kerja, tetapi itu tidak menentukan satu pun. Jadi langkah selanjutnya sangat tergantung pada bagaimana Anda menggunakan Python. Pendekatan terbaik di sini adalah untuk mengetahui alur kerja Python yang baik dan kemudian mencoba untuk menemukan paket Emacs yang membantu Anda secara khusus dengan langkah-langkah pada alur kerja Anda.
Sebagai contoh, ada beberapa paket untuk bekerja dengan virtualenvs (Elpy, yang Anda sebutkan, dilengkapi dengan pyvenv) yang sebaiknya Anda gunakan. Emacs-Jedi memiliki mode pendamping untuk penelusuran kode yang dapat bermanfaat. Jika Anda banyak menggunakan IPython, ada Notebook IPython untuk Emacs. Ada mode dukungan khusus untuk pengembangan Django dll. - Anda dapat mengunjungi http://melpa.org/ dan mencari Python untuk mendapatkan beberapa ide.
Di luar Python, Anda mungkin mendapat manfaat dari beberapa paket Emacs tambahan yang membantu pengembangan secara umum. Proyektil adalah paket generik untuk manajemen proyek yang memberi Anda sejumlah fitur menarik, seperti mencari dalam suatu proyek atau bergerak di antara pengujian dan implementasi. Jika belum diinstal sebagai dependensi dari paket IDE pilihan Anda, Anda juga dapat menggunakan YASnippet yang menyediakan cuplikan cerdas untuk pembuatan kode. Koleksi snippet default juga memiliki sejumlah besar snippet untuk Python.
Tetapi sekali lagi, paket IDE utama di atas akan membuat Anda mendapatkan lingkungan yang waras - langkah selanjutnya sangat tergantung pada alur kerja spesifik Anda.
(Pengungkapan penuh: Saya adalah penulis Elpy, jadi pertimbangkan itu saat membaca di atas.)
sumber
elpy
setiap hari dan memiliki pertanyaan cepat tentang jawaban Anda, ketika Anda mengatakan bahwa "M-x pdb
dapat menjalankan debugger Python" , bagaimana ini sebenarnya? Saya memiliki buffer Python, dan ketika saya melakukannyaM-x pdb
saya mendapatkan prompt di minibuffer yang mengatakan"Run pdb (like this): pdb my_file.py"
. Ketika saya menekanRET
saya mendapatkan "ImportError: Tidak ada modul bernama pdb.pdb: 'pdb bukan paket" Ini adalah dengan PYthon 3.4 terbaru setelah hanya meningkatkan pdb dengan pip, yang memberi saya:$ pip freeze | grep pdb => pdb==0.1
pdb
tidak ditemukan, tetapipython
ditemukan secara lokal, maka Anda dapat menjalankan pdb menggunakanM-x pdb
lalu "Jalankan pdb (seperti ini): python -m pdb my_file.py`Saya akan mendorong pengguna emacs jahat untuk mencoba spacemacs .
Ini memiliki lapisan python yang brilian, lihat detailnya di sini: https://github.com/syl20bnr/spacemacs/tree/master/layers/!lang/python
Sampai sekarang, itu termasuk:
Instalasi sangat mudah, cukup tambahkan baris berikut ke Anda
~/.spacemacs
:sumber
dotspacemacs-configuration-layers
. Tambahkan di sana :)Saya menggunakan mode tujuan . Ini memungkinkan Anda untuk mendefinisikan lingkungan yang cukup kuat.
Menggunakan
elpy
,,pydoc
danneotree
saya memiliki lingkungan yang cukup kuat (dalam arti windows tidak melakukan hal-hal aneh pada kesalahan). Ini juga dapat bekerja dengan cukup baikgud-pdb
untuk debugging.sumber
Berikut ini adalah panduan komprehensif: http://wikemacs.org/wiki/Python Ini mencantumkan solusi siap pakai ( kit pembuka Pendahuluan, Spacemacs, solusi untuk ilmu data , ...), paket bermanfaat besar (Elpy), juga karena setiap paket Anda perlu memperbaiki lingkungan Anda. Inilah ikhtisar .
Refactoring
Ini adalah fitur "IDE-spesifik" yang paling. Emacs karena beberapa kemungkinan berkat berkat pustaka Rope python. Ternyata cara termudah untuk menginstal dan menggunakan adalah paket emacs-traad , di MELPA. Ini fitur, antara lain:
Tali juga termasuk dalam Elpy.
Manipulasi kode yang lebih sederhana
Kami memiliki alat yang lebih sederhana untuk membantu refactoring atau dalam manipulasi kode: http://wikemacs.org/wiki/Python#Other_Python_.22refactoring.22_tools
Misalnya, Proyektil hebat (lihat jawaban lain), kami juga memiliki alat untuk menambah dekorator , menambah / menghapus / mengedit argumen , mengganti nama / menyalin / mengomentari / membunuh metode, alat untuk pembuatan kode, ...
Navigasi kode
Kita dapat menavigasi sebagai IDE dengan tag dan cscope: temukan fungsi yang memanggil ini, temukan kejadian, dll.
Emacs juga memiliki paket hebat seperti imenu (helm-imenu), helm-swoop (grep interaktif dalam buffer), emacs-helm-ag (pencari perak interaktif dalam suatu proyek), dll.
Menjalankan tes
Elpy yang memberikan dukungan yang baik untuk menjalankan tes (dengan pelari Django, elpy atau yang lainnya). Kami bahkan dapat menjalankan hanya unit test yang saat ini kami jalankan: sangat berguna! Jadi ada Hydra untuk membantu dengan itu (siklus antara kesalahan, beralih ke prompt python ...).
Buat dukungan
Ini adalah paket Emacs yang tidak khusus untuk Python. Tapi saya suka bisa menjalankan target make dari mana saja di proyek ini dan untuk memilih perintah make dengan selesai . tautan
Berurusan dengan indentasi
Ada paket kecil, indent-tools , yang memberikan perintah untuk bekerja secara langsung dengan blok indentasi: pindah ke blok indentasi child-parent-next, indent / deindent / comment / copy / kill / fold the current-block , dll. Sempurna untuk yaml, dan juga untuk Python. Dok dan gif demo
Dukungan Django
lihat Django . Elpy mendukung pelari Django. Lihat elpy django doc . django-mode (dalam melpa) memiliki template penyorotan, perintah cepat, penyelesaian perintah manajemen , ...
Juga penting: dukungan besar Git, Github dan Gitlab
magithub dapat membuat PR github, kita dapat mengambil masalah dan memasukkan referensi mereka dalam pesan komit, magit hebat, ... lihat http://wikemacs.org/wiki/Git
sumber
Jawaban di sini telah menyediakan sebagian besar fitur penting yang disediakan spacemacs tetapi selalu ada satu fitur yang tidak dapat saya temukan - DEBUGGING (Saya tidak menemukan alat debugging yang layak yang berjalan dengan baik dengan spacemacs sampai baru-baru ini)
Jadi, bagaimana cara saya mengatur alur kerja debug untuk spacemacs saya?
Ada cabang fitur dalam pengembangan yang menggunakan paket realgud.el untuk menyediakan yang dekat dengan IDE seperti pengalaman debug di ruangwaktu: https://github.com/CeleritasCelery/spacemacs Yang harus Anda lakukan adalah menarik cabang ini ke .emacs Anda. d direktori dan buat beberapa perubahan pada file ~ / .emacs.d / layers / + lang / python / packages.el Anda
Langkah-langkah terperinci untuk mengatur spasi untuk debug (Ambil napas dalam-dalam)
remote add debug-layer https://github.com/CeleritasCelery/spacemacs fetch debug-layer checkout --track debug-layer/debug-layer branch -a
Sekarang buka ~ / .emacs.d / layers / + lang / python / packages.el dan tambahkan fungsi di bawah ini ke akhir file.
;; 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")))
Fungsi ini menggunakan debugger trepan3k sebagai debugger python. Anda bisa mengubah nilainya menjadi pdb atau ipdb atau debugger mana pun yang Anda suka. Jika Anda berencana untuk menggunakan trepan3k pastikan Anda menginstalnya dengan pipsudo pip install trepan3k
karena tidak datang pra-instal dengan distribusi python Anda.Sekarang buka file .spacemacs Anda dan lapisan 'debug' di dalam dotspacemacs-configuration-layers seperti ini
dotspacemacs-configuration-layers '( (python :variables python-enable-yapf-format-on-save t flycheck-disabled-checkers '(python-flake8) flycheck-checker 'python-pylint ) debug )
Ini akan memulai sesi debug dan Anda dapat menambahkan, menghapus breakpoint menggunakan realgud keybindings yang dijelaskan di sini: https://github.com/realgud/realgud#source-window-commands
Kamu sudah selesai!
sumber