3

emacs-for-python ( に基づくpython.el) は、Python プロセスを開始し、Emacs から直接バッファを送信する優れた機能を提供します (通常は で行いますC-c C-c)。ただし、この方法ではバッファごとに新しいプロセスが作成され、Python の作業ディレクトリは対応するファイルのディレクトリに設定され。

代わりに、作業ディレクトリがプロジェクトのルートに設定された単一の Python プロセスが必要です。または、いくつかのプロセスでさえ、モジュールのディレクトリではなく、ルートディレクトリで開始された可能性があります。


なぜそれが必要なのですか?あくまでも輸入品です。次のプロジェクト構造を想像してください。

myproject
   package1
      __init__.py
      mod1.py
   package2
      __init__.py
      mod2.py

file で Python プロセスを開始するmod1.pyと、Emacs は自動的に作業ディレクトリを に設定myproject/package1し、同じパッケージからのみモジュールをインポートするように制限します。他のパッケージからのインポートはありません。絶対輸入はありません。痛み。

sys.path現在、次のようなトリックを使用しています。

import sys, os
sys.path.insert(0, os.path.join(os.path.abspath(__file__), '..', '..'))

各モジュールの冒頭。しかし、これは本当に、本当に、本当に醜く、不便です。

Emacsで下位プロセス用にPythonのプロジェクトルートを設定するためのヒントやコツはありますか?

4

2 に答える 2

2

私は emacs-for-python には詳しくありませんが、プロジェクトのルートへのパスを見つけるのは簡単です。

Projectile は関数を提供しますprojectile-project-root。これを mod1.py バッファで呼び出すと、 が返され"/path/to/myproject"ます。これは、projectile がプロジェクト ルートを認識できることを前提としています。これは、ある種の VCS を使用している場合には問題ありません。

于 2014-01-21T15:39:07.460 に答える