jediとかvirtualenvとかがReason: image not foundと言ってぶっ壊れたときの対処


ある日突然jedi(EmacsでPythonを書くときにつかうすごいやつだよ)がぶっ壊れた。
python-modeのバッファでピリオドを打つたびに

Error (jedi): Failed to start Jedi EPC server.
*** You may need to run "M-x jedi:install-server". ***
This could solve the problem especially if you haven't run the command yet
since Jedi.el installation or update and if the server complains about
Python module imports.

というメッセージが出てくるし、当然補完機能は使えない。
指示通りコマンドを実行しても何も起きない。

よくみると*Messages*に

Server may raise an error. Use "M-x epc:pop-to-last-server-process-buffer RET" to see full traceback:

とあるのでtracebackを見てみると

dyld: Library not loaded: *****
  Referenced from: *****:
  Reason: image not found

という見慣れないエラーがある。なんだこれ。

原因

簡単に言うとvirtualenvが壊れていた。
私の環境では (custom-set-variables '(jedi:environment-root "jedi")) という感じでvirtualenvを使う設定になっているのだが、そのディレクトリの中にある大量のシンボリックリンクがいずれもリンク切れになっていた。
homebrewでPythonをバージョンアップしたためである。

と、いうわけで、このディレクトリを削除して作りなおすと万事うまくいった。よかった。

あんまし関係無いけど、この問題に対処する隙がない間エラーを無視してとりあえずjediを el-get-remove しようとしたら auto-complete がないから無理〜と言って怒られたのは納得がいかない。
jediさん何とかして。


Leave a Reply

Your email address will not be published. Required fields are marked *