为何Jython找不到这个模块?
可能重复的问题:
如何从Java运行Python脚本?
我正在用Jython运行一个Python脚本,但遇到了这个错误:
主线程中出现异常,追踪信息(最内层的最后一行):文件 "C:\Facebook\LoginPython\Facebook.py",第5行,出错原因是:ImportError: 没有名为cookielib的模块
为什么这个不行呢?
2 个回答
2
关于使用Jython,我也遇到了一些问题。虽然这可能不是最好的方法,但对我来说效果不错。
我假设你想在Java代码中调用一个名为foo的函数,这个函数在bar模块里,它需要一个字符串作为参数,并返回一个字符串:
PythonInterpreter interpreter = new PythonInterpreter();
// Append directory containing module to python search path and import it
interpreter.exec("import sys\n" + "sys.path.append(pathToModule)\n" +
"from bar import foo");
PyObject meth = interpreter.get("foo");
PyObject result = meth.__call__(new PyString("Test!"));
String real_result = (String) result.__tojava__(String.class);
这里的sys.path.append()这一部分只有在你的模块默认不在Python的搜索路径中时才需要。如果你遇到“找不到导入”或“模块未找到”的错误,这可能就是问题所在。此外,你还需要在Java和Python之间转换对象类型,如果需要的话,你得自己查一下。我目前只需要转换一些简单的基本类型,这些类型转换起来比较简单,不确定对于任意的Java对象是否也那么简单。