如何使用Pydev / Eclipse在Python和Java项目之间共享通用的Python / Jython代码?

时间:2011-03-30 11:25:57

标签: python eclipse jython pydev

我正在使用嵌入在Java项目中的Jython脚本,该项目是在安装了Pydev的Eclipse中开发的。现在我想在另一个纯Python项目中重用这个脚本。有没有办法干净地执行此操作而不复制脚本?

目前,我有一个Java项目,其目录为src/(包含Java源代码)和src-py/(包含Jython源代码),并添加了Pydev“facet”。 Java代码使用以下内容调用Jython代码:

// evaluate the Jython class
PythonInterpreter interpreter = new PythonInterpreter();
InputStream resourceAsStream = MyEclipsePlugin.getResource("/src-py/MyJythonCode.py");
interpreter.execfile(resourceAsStream);

// create an instance of the Jython class and retrieve a Java interface reference to it
interpreter.exec("x = MyJythonClass()");   // MyJythonClass implements MyJavaInterface
Object x = interpreter.get("x").__tojava__(MyJavaInterface.class);
return (MyJavaInterface) x;

这很有效,但显然很难看。从我读到的,有一个“jythonc”一次 - 这可能更接近我需要的东西 - 但它似乎已被弃用,你不鼓励使用它。没有它,我需要在运行时使用实际的Jython源代码将其编译为JVM类。因此上面的模式,遗憾的是似乎不支持加载模块,因此我目前正在使用单个.py文件中的所有内容。我想我最终可以多次执行interpreter.execfile(),但是当模块之间存在相互依赖关系时,我还没有真正弄清楚如何做到这一点。

接下来,我尝试创建一个新的Jython项目来移动我的MyJythonCode.py。不幸的是,我不能将Pydev / Jython项目添加为Java项目的项目引用,所以我不确定如何将它集成到Java项目中。

我目前看到的选项,我都不喜欢:

  • 复制MyJythonCode.py并同时修改它们。
  • 做一些时髦的svn:外部的东西,在每次更新时为我复制。
  • 尝试找到Eclipse的预构建/自定义构建步骤插件来进行复制。

有人有更好的主意吗?

1 个答案:

答案 0 :(得分:0)

我认为正确的事情是为这些内容设立一个单独的项目,这两个项目都依赖于......

即:

将该项目创建为java项目并在之后添加pydev属性(即:右键单击项目> pydev>设置为pydev项目)。

然后,在该项目中,您可以创建java包装类,并为pydev配置源路径(并将该项目添加为其他项目的参考:右键单击其他项目>属性>项目引用)

这样,事情应该适用于java / python。