本文介绍了Jython :: PythonInterpreter可以使用哪些模块,以及如何添加更多模块的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在使用 Jython 2.5.3 PythonInterpreter类评估一些简单的脚本,但是当我需要导入任何非核心模块时,会遇到异常.我是否必须在CLASSPATH中添加一些jython库jar?

I am using the Jython 2.5.3 PythonInterpreter class to evaluate some simple scripts but when I need to import any non-core modules I get an exception. Do I have to add some jython library jars in the CLASSPATH?

展示问题的缩小代码:

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 运行上述操作,并失败,并显示以下跟踪信息:

Running the above with only jython-2.5.3.jar in the CLASSPATH fails with the following trace:

 [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代替,它应该可以工作.参见

You seem to be using the Jython jar file that doesn't include the bundled Python files (the standard library in the /Lib folder). I believe it should work if you use the standalone jar instead. See

  • http://fwierzbicki.blogspot.se/2012/08/jython-253-final-released.html
  • http://wiki.python.org/jython/InstallationInstructions

这篇关于Jython :: PythonInterpreter可以使用哪些模块,以及如何添加更多模块的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

09-16 06:46