java - Jython::PythonInterpreter 有哪些模块可用以及如何添加更多

标签 java jython

我正在使用 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/

相关文章:

java - 用于 Wifi 状态的 Android Monkeyrunner 插件

clipboard - 使用 Sikuli 或 Jython 时清除 Windows 的剪贴板

java - JRS-223 是否涵盖运行时环境?

java - 在 Jython 2.5 中同时执行多个函数

java - 当 setResizing 为 false 时,AnchorPane 显示白色边框 (JavaFX)

java - 为什么 web.xml 从 servlet 3.0 中删除

java - 我们可以在抛出中使用通用异常吗?

java - RobotFramework无法导入Java关键字库

java - 如何获得 "For"操作的结果?

java - 无法在 Apache isis quartz 中注入(inject)服务