繁体   English   中英

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

[英]How do I share common Python/Jython code between a Python and Java project with Pydev/Eclipse?

我正在使用嵌入在Java项目中的Jython脚本,该Java项目是在Eclipse中开发的,安装了Pydev。 现在,我想在另一个纯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:externals东西,这些东西在每次更新时都会帮我复制。
  • 尝试找到一个预构建/自定义构建步骤插件,以供Eclipse复制。

有人有更好的主意吗?

我认为应该为这两个都依赖的内容创建一个单独的项目...

即:

将项目创建为Java项目,然后向其添加pydev属性(即:右键单击项目> pydev>设置为pydev项目)。

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

这样一来,对于Java / Python来说一切都应该正常工作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM