Emacsは優れたエディターですが、「最初にIDEを必要とするプログラムを作成する」と言われています。そのため、最新のIDEのすべての機能を備えたPYTHON用の広範囲にカスタマイズ可能なEmacsでIDEをどのように構築しますか?コードを効果的にデバッグ、実行、コンパイル、および管理できるようにしたい。これまでに、Elpyパッケージをインストールしたテーマについて読み上げましたが、これを可能にするために他に何を知って何をする必要があるのかはわかりません。
Emacsは優れたエディターですが、「最初にIDEを必要とするプログラムを作成する」と言われています。そのため、最新のIDEのすべての機能を備えたPYTHON用の広範囲にカスタマイズ可能なEmacsでIDEをどのように構築しますか?コードを効果的にデバッグ、実行、コンパイル、および管理できるようにしたい。これまでに、Elpyパッケージをインストールしたテーマについて読み上げましたが、これを可能にするために他に何を知って何をする必要があるのかはわかりません。
回答:
EmacsのデフォルトのPythonモードには、劣ったPythonシェルに基づくコード補完を含む多くの機能があり、パッケージを追加せずに基本的なIDEとして使用できます。他のコアEmacs関数もPythonで使用できます。たとえば、M-x compile
/ M-x recompile
はテストの実行に使用できます。M-x pdb
Pythonデバッガーを実行でき、Emacsのgud環境と統合されるため、実際にインラインブレークポイントを取得できます。
それを拡張するために、Emacsには3つの主要なパッケージがあり、より機能的なPython IDEを(アルファベット順に)実装しようとしています。
それらはすべてほぼ同じ機能を提供します。
これらを超えて、Emacsは多くのワークフローを支援することもできますが、単一のワークフローを規定するものではありません。したがって、次のステップは、Pythonの使用方法に大きく依存します。ここでの最善のアプローチは、優れたPythonワークフローを見つけ出し、それからワークフローのステップで具体的に役立つEmacsパッケージを見つけることです。
たとえば、virtualenvで動作する複数のパッケージがあり(Elpy、これはpyvenvに付属しています)、おそらく使用するはずです。Emacs-Jediには、便利なコードブラウジング用の付随モードがあります。IPythonを頻繁に使用している場合は、Emacs用のIPython Notebookがあります。Django開発などの特別なサポートモードがあります。http://melpa.org/にアクセスし、Pythonを検索していくつかのアイデアを得ることができます。
Python以外では、一般的な開発に役立つ追加のEmacsパッケージの恩恵を受けることができます。Projectileはプロジェクト管理用の汎用パッケージであり、プロジェクトの検索やテストと実装間の移動など、多くの興味深い機能を提供します。選択したIDEパッケージから依存関係としてまだインストールされていない場合は、コード生成用のインテリジェントスニペットを提供するYASnippetを使用することもできます。デフォルトのスニペットコレクションには、Pythonのスニペットも多数あります。
ただし、上記のメインIDEパッケージを使用すると、健全な環境が得られます。次のステップは、特定のワークフローに大きく依存します。
(完全開示:私はElpyの著者であるため、上記を読むときはそれを考慮してください。)
elpy
ます」とあなたが言うとき、私は毎日使用し、あなたの答えについて簡単な質問がありますが、これは正確にどうですか?Pythonバッファーがあります。そうすると、ミニバッファーにと表示されるプロンプトが表示されます。私は押したとき:これは私を与えるだけピップでPDBをアップグレードした後、最新のPython 3.4、である私は「:pdb.pdbという名前のモジュールのPDBはパッケージではありませんはImportError」を取得M-x pdb
M-x pdb
"Run pdb (like this): pdb my_file.py"
RET
$ pip freeze | grep pdb => pdb==0.1
pdb
が見つからないが、python
ローカルで見つかった場合はM-x pdb
、「Run pdb(like this):python -m pdb my_file.py`
evil-emacsユーザーにはspacemacsを試してみることをお勧めします。
すばらしいPythonレイヤーがあります。詳細はこちらをご覧ください:https : //github.com/syl20bnr/spacemacs/tree/master/layers/! lang/python
現在、以下が含まれています。
インストールはとてつもなく簡単で、次の行をに追加するだけ~/.spacemacs
です:
(setq-default dotspacemacs-configuration-layers '(python))
dotspacemacs-configuration-layers
ます。そこにそれを追加します:)
purpose-modeを使用します。これにより、非常に堅牢な環境を定義できます。
、、およびを使用するelpy
とpydoc
、neotree
かなり堅牢な環境になります(エラーが発生してもウィンドウが奇妙なことをしないという意味で)。これはgud-pdb
デバッグにも非常に有効です。
ここに包括的なガイドがあります:http : //wikemacs.org/wiki/Pythonすぐに使用できるソリューション(Prelude スターターキット、Spacemacs、データサイエンス向けソリューションなど)、便利な大きなパッケージ(Elpy)もリストされています。環境を改善するために必要なすべてのパッケージとして。概要は次のとおりです。
これは最も「IDE固有の」機能です。Rope pythonライブラリのおかげで、Emacsにいくつかの可能性があります。最も簡単なインストールと使用方法は、MELPAのemacs-traadパッケージです。とりわけ以下の機能があります。
ロープもElpyに含まれています。
リファクタリングやコード操作に役立つ簡単なツールがあります:http : //wikemacs.org/wiki/Python#Other_Python_.22refactoring.22_tools
たとえば、Projectileは優れています(他の回答を参照)。デコレータを追加するツール、引数を追加/削除/編集するメソッド、名前を変更する/コピー/コメント/メソッドを削除する、コード生成ツールなどもあります…
タグとcscopeを使用してIDEとしてナビゲートできます。これを呼び出す関数を見つける、出現を見つけるなど。
Emacsには、imenu(helm-imenu)、helm- swoop(バッファー内の対話型grep)、emacs-helm-ag(プロジェクト内の対話型シルバーサーチャー)などの優れたパッケージもあります。
テストを実行するための優れたサポートを提供するのはElpyです(djangoランナー、elpy、または別のものを使用)。現在実行中のユニットテストのみを実行することもできます。非常に便利です。そのため、これを支援するHydraがあります(エラー間のサイクル、pythonプロンプトに切り替えます…)。
これはPython固有ではないEmacsパッケージです。しかし、プロジェクト内のどこからでもmakeターゲットを実行し、完了してmakeコマンドを選択できるようにします。リンク
少しパッケージ、ありますインデント-ツールインデントブロックを直接操作するためのコマンドを与え、:移動インデントの次-前の子・親ブロックに、インデント/ deindent /コメント/コピーが/殺す/現在のブロックを折ります、など。yamlやPythonにも最適です。Doc and GIF Demo
Djangoを参照してください。Elpyはdjangoランナーをサポートしています。elpy django docを参照してください。django-mode(melpa)には、テンプレートの強調表示、クイックコマンド、管理コマンドの完了、…
magithubはgithub PRを作成できます。問題をフェッチし、コミットメッセージに参照を挿入できます。magitは素晴らしいです。http://wikemacs.org/wiki/Gitを参照してください
ここでの答えは、spacemacsが提供する重要な機能のほとんどを提供しましたが、見つけられない機能が常に1つありました-デバッグ(ごく最近までspacemacsでうまくいく適切なデバッグツールは見つかりませんでした)
では、spacemacsのデバッグワークフローをどのように設定しましたか?
開発中の機能ブランチには、realgud.elパッケージを使用してspacemacsのデバッグエクスペリエンスのようなIDEに近い機能を提供するものがあります。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 / layers / + 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")))
開き、ファイルの最後に以下の関数を追加します。
この関数はpythonデバッガーとしてtrepan3kデバッガーを使用します。値をpdbまたはipdb、または任意のデバッガーに変更できます。trepan3kを使用する予定がある場合sudo pip install trepan3k
は、pythonディストリビューションにプリインストールされていないため、必ずpipで
インストールしてください。
.spacemacsファイルを開き、次のようなdotspacemacs-configuration-layers内の「debug」レイヤーを開きます。
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
完了です!