2013-02-05 16 views
8

emacsでpythonのコード補完をするためにemacs-jediをインストールしました。一般に、私は非常に感銘を受けたと言わなければならない!それは箱からすぐに機能し、組み込みのライブラリのための完成をすばやく見つけます。しかし、私は科学的な目的のためにpythonを使用し、私の仕事のためにnumpyとscipyに依存しています。何らかの理由で、私はこれらのモジュールのための補完を得ません。emacs-jediでnumpyの補完が見つかりません

例:

import numpy 

testVector = numpy.array([1,2,3]) 

は今、テストベクトルを入力します。待って、何も表示されません

答えて

1

このような場合は完了できます。

enter image description here

を次のように古い要件モジュールを使用することができます(ジェダイ、EPC、argparse)。 更新して再試行する必要があります。

+0

emacs-jediをインストールしたときにel-getによって自動的にインストールされるepcとjediがあったとしても、私はそれらのフォルダにgit pullを実行して最新版があることを確認しました。私もargparseの最新バージョンを持っていると私に言ったargparse --upgradeをsudo pipにインストールしました。従属関係は最新のようですが、私はまだnumpyやscpipyの完了を得ていません。 – mike

+0

ええと、私はepc 0.0.3とjedi 0.5b5を使います。 epc、jediのバージョンを確認してください。 – syohex

5

なぜ動作しないのだろう? sys.pathのように見えますが、設定をしなくても動作します。しかし、ここではブルートフォース修正のためのいくつかのアイデアがあります。

(1)次のスクリプトを実行して、numpyのロードパスを取得します。

import os 
import numpy 
print(os.path.dirname(os.path.dirname(numpy.__file__))) 

(2)強制的にパスを追加するには、このようなjedi:server-argsを設定します。

(setq jedi:server-args 
     '("--sys-path" "THE/PRINTED/PATH/FOR/NUMPY" 
     "--sys-path" "THE/PRINTED/PATH/FOR/SCIPY")) 

も参照してください:http://tkf.github.com/emacs-jedi/#jedi:server-args


編集1

@のsyohexの答えにあなたのコメントを読むあなたには、いくつかのインストール方法を混同のように、それが見えます。 jeid.elは、jedi.elが存在する場合は、そのディレクトリにvirtualenv "env /"を使用します。あなたがvirtualenvを持っているなら、el-getは自動的に "env /"を作成します。だから、あなたのシステムのインストールのような場合、あなたはこれを行うことにより、 "EVN /" を無視するJedi.elを指示する必要があります:

(require 'jedi) 
(setq jedi:server-command (list "python" jedi:server-script)) 

も参照してください:http://tkf.github.com/emacs-jedi/#jedi:server-command


編集2

私はあなたの説明から何が起こっているのか分かりません。問題を絞り込む方法はいくつかあります。

  1. jedi.elがインストールされているディレクトリにあるファイル名を指定して実行make tryout(のような~/.emacs.d/el-get/jedi/)。

    これは、jedi.elの最小限の設定で、Emacsのプロセスをクリーンな状態(つまり、あなたの設定を読み込みません)で開きます。 numpyとscipyを完了できるかどうかを見てみましょう。

  2. Emacsでnumpyとscipy をインポートできますか?あなたはEmacsとシェルで異なる環境変数を持つことができます。実行M-! python -c 'import numpy' RET。これでエラーが出ない場合は問題ありません。

  3. env/bin/pythonを使用してnumpyとscipyをインポートできますか?それを行う最良の方法はEmacsからチェックすることです。

    まず、jedi.elがインストールされているディレクトリ(例:C-x C-f ~/.emacs.d/el-get/jedi/ RET)に移動します。

    M-! env/bin/python -c 'import numpy' RETを実行します。これでエラーが出ない場合は、numpyとscipyをインポートすることができます。

少なくとも1つでエラーが発生することを願っています。そうでなければ、別の可能性について考える必要があります。

+0

jedi:server-commandはそれ以前には無効であり、jedi:server-scriptもそうであるため、jediを起動した後でのみこれを行うことができます。私はpythonモードのフックに入れて、jedi:setupの後でのみ実行されるようにしましたが、voidエラーのエラーが続いています。 インストール方法が混在していないと思います。私はel-getでインストールするための指示に正確に従いました。 – mike

+0

Clrification:先ほど説明したようにnumpyのパスを含めるようにしました。それは何も変わらず、まだ完了していません。 – mike

+0

'jedi:server-script'を使う前に'(require 'jedi) 'を呼ぶだけです。必要ならPython-mode-hookで呼び出すことができます。 – tkf