我们如何在JSR-223中使用外部Jython模块? (假设使用pip或easy_install安装了一些foo python模块,并且以下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:没有名为pyfoo的模块。但是,在终端中执行以下操作会成功。
jython jsr223_test.py
有什么建议吗?
修改 我猜这是一个类路径问题,并将py文件从egg复制到我的应用程序工作目录。在http://wiki.python.org/jython/UserGuide#using-jsr-223之后我还添加了引擎环境的路径(如代码所示,在// BEGIN EDIT和// END EDIT之间)并且它有效。 我也尝试在路径中添加$ JYTHON_HOME / Lib / site-packages,但它不起作用,我不知道为什么。