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

2024-10-01 04:48:00 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用的是一个嵌入在Java项目中的Jython脚本,该脚本是在Eclipse中开发并安装了Pydev的。现在我想在另一个纯Python项目中重用这个脚本。有没有一种方法可以在不复制脚本的情况下干净地完成这项工作?在

目前,我有一个单独的Java项目,其中添加了目录src/(包含Java源代码)和{}(包含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找到一个预构建/自定义构建步骤插件来进行复制。在

有人有更好的主意吗?在


Tags: the项目代码pysrc脚本源代码jython
1条回答
网友
1楼 · 发布于 2024-10-01 04:48:00

我认为正确的做法应该是为这些内容单独设计一个项目,这两个项目都依赖于。。。在

即:

将该项目创建为java项目,然后将pydev属性添加到该项目中(即:右键单击该项目>;pydev>;setaspydev项目)。在

然后,在该项目中,您可以创建java包装器类,还可以配置pydev的源路径(并将该项目添加为其他项目的引用:右键单击other projects>;“properties”>;“project references”)。在

这样,java/python都可以正常工作。在

相关问题 更多 >