使用JSR-223的Jython import语句

时间:2012-03-30 06:15:15

标签: java jython jsr223

我们如何在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,但它不起作用,我不知道为什么。

0 个答案:

没有答案