【问题标题】:Jython :: which modules are available to PythonInterpreter and how to add moreJython :: PythonInterpreter 可以使用哪些模块以及如何添加更多
【发布时间】:2013-02-01 07:55:28
【问题描述】:

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

【问题讨论】:

    标签: java jython


    【解决方案1】:

    您似乎正在使用不包含捆绑 Python 文件的 Jython jar 文件(/Lib 文件夹中的标准库)。我相信如果您改用独立的 jar,它应该可以工作。见

    【讨论】:

    • 我可以确认,使用运行时类路径中的独立 jar,现在可以找到模块“datetime”(而以前没有找到)。然而,'import json' 在运行时类路径中的两种情况下(使用 jython-standalone-2.5.3.jar 或使用 jython-2.5.3.jar)仍然会产生相同的失败。
    • json 模块是在 Python 2.6 中添加的。它在 Jython 2.5.3 中不可用。您可能想尝试 Jython 2.7beta1,其中包括 json。见jython.org/downloads.html
    • 我刚刚遇到了问题。在我的 pom.xml 中添加了 jython-standalone 2.7.0 发布版本。有效!
    猜你喜欢
    • 1970-01-01
    • 2021-05-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-15
    • 1970-01-01
    相关资源
    最近更新 更多