我们如何在 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: 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 添加到路径中,但它不起作用,我不知道为什么。