2013-02-01 64 views
3

我使用Jython的2.5.3PythonInterpreter類來評估一些簡單的腳本,但是當我需要進口任何非核心模塊我得到一個異常。我必須在CLASSPATH中添加一些jython庫jar嗎?的Jython ::該模塊可PythonInterpreter以及如何添加更多

演示該問題縮小代碼:

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) 

回答

4

您似乎正在使用Jython jar文件,該文件不包含捆綁的Python文件(/Lib文件夾中的標準庫)。我相信如果你使用獨立的jar,它應該可以工作。見

+1

我可以證實,在運行時類路徑模塊「日期時間」現在發現獨立的罐子(而以前,它不是)。然而,在運行時類路徑中,'import json'在這兩種情況下(使用jython-standalone-2.5.3.jar或者使用jython-2.5.3.jar)都會產生相同的錯誤。 –

+0

'json'模塊是在Python 2.6中添加的。它在Jython 2.5.3中不可用。你可能想試試Jython 2.7beta1,它包含'json'。請參閱http://www.jython.org/downloads.html。 – mzjn

+0

我剛剛遇到了這個問題。在我的pom.xml中添加了jython-standalone 2.7.0發佈版本。作品! –

相關問題