为何Jython找不到这个模块?

-2 投票
2 回答
4095 浏览
提问于 2025-04-16 12:02

可能重复的问题:
如何从Java运行Python脚本?

我正在用Jython运行一个Python脚本,但遇到了这个错误:

主线程中出现异常,追踪信息(最内层的最后一行):文件 "C:\Facebook\LoginPython\Facebook.py",第5行,出错原因是:ImportError: 没有名为cookielib的模块

为什么这个不行呢?

2 个回答

1

可以使用 Jython 在Java虚拟机上运行Python代码。想要在Eclipse这个开发工具上用Python(或者Jython)进行开发的话,可以使用 PyDev

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对象是否也那么简单。

撰写回答