我正在使用 Jython 2.5.3 PythonInterpreter
类来评估一些简单的脚本,但是当我需要导入任何非核心模块时,我会遇到异常。我必须在 CLASSPATH 中添加一些 jython 库 jar 吗?
缩小演示问题的代码:
import org.python.core.*;
import org.python.util.PythonInterpreter;
public class JythonTest {
public static void main(String args[]) throws Exception {
String scriptA = "import json"; // "import datetime" fails as well
PythonInterpreter pi = new PythonInterpreter();
PyCode code = pi.compile(scriptA);
PyObject result = pi.eval(code);
}
}
在 CLASSPATH 中仅使用 jython-2.5.3.jar 运行以上命令失败并显示以下跟踪:
[java] ImportError: No module named json
[java]
[java] at org.python.core.Py.ImportError(Py.java:304)
[java] at org.python.core.imp.import_first(imp.java:755)
[java] at org.python.core.imp.import_module_level(imp.java:837)
[java] at org.python.core.imp.importName(imp.java:917)
[java] at org.python.core.ImportFunction.__call__(__builtin__.java:1220)
[java] at org.python.core.PyObject.__call__(PyObject.java:357)
[java] at org.python.core.__builtin__.__import__(__builtin__.java:1173)
[java] at org.python.core.imp.importOne(imp.java:936)
[java] at org.python.pycode._pyx0.f$0(<script>:2)
[java] at org.python.pycode._pyx0.call_function(<script>)
[java] at org.python.core.PyTableCode.call(PyTableCode.java:165)
[java] at org.python.core.PyCode.call(PyCode.java:18)
[java] at org.python.core.Py.runCode(Py.java:1275)
[java] at org.python.core.__builtin__.eval(__builtin__.java:484)
[java] at org.python.core.__builtin__.eval(__builtin__.java:488)
[java] at org.python.util.PythonInterpreter.eval(PythonInterpreter.java:198)
[java] at JythonTest.main(JythonTest.java:10)
最佳答案
您似乎使用的 Jython jar 文件不包含捆绑的 Python 文件(/Lib
文件夹中的标准库)。我相信如果您改用独立 jar,它应该可以工作。见
关于java - Jython::PythonInterpreter 有哪些模块可用以及如何添加更多,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14641917/