JSR-223 で外部 Jython モジュールを使用するにはどうすればよいですか? (いくつかの foo python モジュールが pip または easy_install を使用してインストールされ、次の Python コードが Jython で実行されていると仮定します)
Python コード: (jsr223_test.py)
import pyfoo
pyfoo.do_sth()
Java コード:
import javax.script.*;
import java.io.*;
import org.python.core.Py;
import org.python.core.PySystemState;
public class Main() {
//BEGIN EDIT
PySystemState engineSys = new PySystemState();
engineSys.path.append(".");
Py.setSystemState(engineSys);
//END EDIT
ScriptEngineManager mgr = new ScriptEngineManager();
ScriptEngine jython = mgr.getEngineByName("jython");
jython.eval(new FileReader(new File("jsr223_test.py")));
}
これにより、ImportError: no module named pyfoo が発生します。ただし、ターミナルで次を実行すると成功します。
jython jsr223_test.py
何かアドバイス?
編集: クラスパスの問題だと思い、py ファイルを卵からアプリケーションの作業ディレクトリにコピーしました。http://wiki.python.org/jython/UserGuide#using-jsr-223に従って、そのパスもエンジン環境に追加しました (コードで見られるように、//BEGIN EDIT と //END EDIT の間)。そしてそれはうまくいきました。$JYTHON_HOME/Lib/site-packages をパスに追加しようとしましたが、機能しませんでした。理由はわかりません。