1

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 をパスに追加しようとしましたが、機能しませんでした。理由はわかりません。

4

0 に答える 0