EmacsとPython、PythonとEmacs

ネット上で「Pythonの最高のIDE-本当に存在するのか」という話がよくあります。 たとえば、 LinkedInのPythonコミュニティグループ最近のQ&A (残念ながら、表示はグループのユーザーのみが可能です)。 要するに、世界は以下を中心に展開します。







最初の4つのソリューションがすぐにPython用のIDEを提供する場合、最後の2つのソリューションには特定の設定が必要です。 Vimについては知りませんが、Emacsの場合、Pythonの便利で(非常に)機能的な環境を得るには、インターネットの検索と実験に少なくとも6時間を費やす必要があります。



私に関しては、非常に長い間、Eclipse + PyDevで働いていました-完全に機能するソリューションです。 しかし、WindowsからUbuntuへの最終的な移動(誰もがUbuntにLiberationフォントをインストールする必要があります!)の後、私はずっと前に始めたことを終えることに決めました。



habracatの下での6時間のデータ履歴(物語は、読者がEmacsとPythonに少なくとも少し精通していること、そしてパッケージのインストールに関してはUbuntu(Debian)特有の色合いも持っていることを示唆しています)。







Emacs Pythonモード



Emacsバージョン21以前には、python.elモジュールファイルの名前で呼び出される組み込みのPythonプログラミングモードがあります。 ほぼ同じ機能を提供する独立したプロジェクトもあります。 両方のソリューションを比較します。



組み込みのpython.el



幸いなことに、Pythonスクリプト用の便利で機能的なテキストエディタが必要な人のためです。以下で説明することは何もできません。python.elはすぐに使える優れた機能セットを提供します。



  1. 構文強調コード。
  2. 自動インデント。
  3. Emacsの内部インタープリターを実行する機能。
  4. 内部インタープリターで編集可能なコードを実行する(バッファー全体とその選択部分の両方)。
  5. ある種の完成。
  6. 便利なコードのコメント/コメント解除機能。
  7. Pythonヘルプシステムとの相互作用。




独立したpython-mode.el



しばらくして、トピック「python-mode.el vs. python.el」、コミュニティのほとんどがpython-mode.elモジュールを使用しているという結論に達しました。 この主な理由は、フォーラムvelocityreviewsのこのスレッドでかなり説明されています 。 主なもののうち、1つを区別できます。



  1. python.elの内部インタープリターの「インライン」が不十分です。
  2. python.elにクラスエクスプローラーがありません。
  3. 「古き良きpython-mode.elのような見た目や雰囲気ではありません」-コミュニティは気難しいです:)




それほど多くの違いはなく、すぐに目立つことはありません。それらを見つけるには、あちこちで作業する必要があります。 しかし、私はまだpython-mode.elをsudo aptitude install python-mode



ました: sudo aptitude install python-mode



and business-.emacsでさえ編集する必要はありません。



そのため、モードが選択されていると信じています。Python-ModeでのEmacsのスクリーンショットを2、3回行った後、さらに進んでください。











おそらく、Emacsにttfフォントがあることに気づいたのでしょうか? これは小さな次の投稿になります。 また、エラーがその場で強調表示されることにも気付くことができます。



その場でエラーをハイライト-Pylint



Emacsには優れたflymakeモードがあり、すべてのコンパイルエラー(および不適切なプログラミングスタイルに関する警告やメッセージ)をオンザフライで強調表示できます。 問題は、Pythonがデフォルトでサポートされていないことです。 この省略を修正します。



コンソールで:

sudo aptitude install pylint pymacs







これらのパッケージは、Pythonモードのflymakeに必要です。 pylint-コードのエラーをチェックするために、pymacsはPythonとEmacsLISPの間の双方向の相互作用を提供します。



PATHに次のスクリプト(〜/ binに作成)を作成し、epylintという名前を付けます。



 #!/ usr / bin / env python

再インポート
インポートシステム

サブプロセスのインポートから*

 p = Popen( "pylint -f parseable -rn --disable-msg-cat = C、R%s"%
           sys.argv [1]、シェル= True、stdout = PIPE).stdout

 p.readlines()の行の場合:
     match = re.search( "\\ [([WE])(、(。+?))?\\]"、line)
    一致する場合:
         kind = match.group(1)
         func = match.group(3)

         kind == "W"の場合:
             msg = "警告"
        その他:
             msg = "エラー"

         funcの場合:
             line = re.sub( "\\ [([WE])(、(。+?))?\\]"、
                           「%s(%s):」%(msg、func)、line)
        その他:
             line = re.sub( "\\ [([WE])?\\]"、 "%s:"%msg、line)

        印刷行、

     p.close()




このスクリプトは、pylintを呼び出してエラーのソースをチェックします。



次に、.emacs(通常は〜/ .emacsですが、 順序付けられたユーザーは、load-fileを使用して.emacsにロードされるprogramming.el、python.el、common.elなどのファイルの小さな階層を持っています)で次の行を追加します。



 (when(load "flymake" t)
   (defun flymake-pylint-init()
     (let *((temp-file(flymake-init-create-temp-buffer-copy
                        'flymake-create-temp-inplace))
            (ローカルファイル(ファイル相対名
                        一時ファイル
                         (ファイル名ディレクトリバッファファイル名))))
       (「epylint」のリスト(ローカルファイルのリスト))))

   (リストに追加 'flymake-allowed-file-name-masks
                '( "\\。py \\'" flymake-pylint-init)))

 (add-hook 'python-mode-hook' flymake-mode)




最後の行はオプションです-python-modeを使用して、すべての新しいバッファーのデフォルトのflymakeモードを有効にします。 記述しない場合、flymakeを有効にするには、目的のバッファーでMx flymake-mode



を実行する必要があります。



これで、エラーの強調表示が機能するはずです。



Pythonコードのリファクタリングと完成



SourceForgeのRopeおよびRopemacsプロジェクトのホスティングに行き、ropeとropemacsをダウンロードして、インストール-sudo sudo python setup.py install



install-両方のパッケージをsudo python setup.py install



ます。



その後、次の行を.emacsファイルに追加します。



 ( 'pymacsが必要)
 (pymacs-load "ropemacs" "rope-")




プロセスでropeとropemacsの両方が通常のpythonモジュールであることに気づいた可能性があります。 また、ropmacsによるEmacs機能の拡張は、pymacsを介して行われます。pymacsは、EmacsLISPとPythonを接続します。



結果を確認します(メニューに注意を払ってください-ropemacsのほとんどの機能を使用できる「Rope」項目が表示されました)。



完了(M- /を押すとトリガーされます):





リファクタリング(例として名前の変更を使用):





実際、これはPython用のEmacsで得られる最高の完成ではありませんが、次の機会に行きましょう:)私のさらなる研究についてお話しすることをお約束します。



Emacsの初心者向け



私はEmacs、そのキーボードショートカット、および一般的なパラダイムに慣れています-したがって、結局のところ、それで作業することを楽しんでいます-私の指はキーボードを飛び回っています、私はマウス、ミニバッファドライブを完全に忘れています...まだEmacsを使用していないが、深刻な問題を抱えたいと思っている人たち-WindowsがLinuxに移行した後のような、非常に似た感情。 ボタンが奇妙で、カーソルの動きがあまりにもトリッキーで、ある種のバッファ、ウィンドウ...私はそのような読者のために書いています。それをワークフローに追加します-習慣を打破するのは難しいでしょう。 私自身は6か月前にこの「エディター」に懐疑的でしたが、今ではコンピューターの電源を入れたり切ったり、数十個のプログラム(オーガナイザー、日記、さまざまな言語のIDE、エディター、ジャバー、IRCクライアント、ライティングツール)ファイルマネージャーだけでなく、HTMLでドキュメントを公開することもできます)-強制ではなく、単にそれらよりも便利です。



ご清聴ありがとうございました。この情報がお役に立てば幸いです。 そして、はい-これはハブに関する私の最初の出版物です。見落としがある場合は、コメントに書いてください。将来を考慮します。



ソースと便利なリンク(Python-Mode EmacsWikiの多く)



PythonモードのEmacsWiki

python.elとpython-mode.elの選択

Bazaarプロジェクトリポジトリpython-mode.el

Pythonモードで補完を有効にする

Cc!を使用する pythonの代わりにipythonを起動するには

F1を押して、pylintでコードを確認します

優れたコード補完とPythonコードのリファクタリング

EmacsでのPythonコードのデバッグ:PdbNotes

pycompleteによるPython補完

そして完成について






All Articles