从Jython运行Python中的Python模块

时间:2015-06-27 06:03:16

标签: python jython

我已经被置于一个复杂的环境中,我正在使用Python库,但我们拥有的其他所有东西都是Java。我们希望能够从Java访问和使用Python库,因此我们开始研究和使用Jython。

Jython非常棒,我们将Jython Interpreter导入我们的Java程序,以便我们可以访问大部分库。然而,Jython并不完全支持所有内容,而且我们无法做到这一点。所有路径都设置正确,有些模块我们无法导入。

所以假设我们没有别的办法可以让Python库与Jython兼容,下一个想法是以某种方式从Jython解释器调用Python,并让Python运行一个模块(用Python编写)。理想情况下,我们可以使用Python简单地导入模块,然后使用Jython调用所有方法(但是在Python中执行它们)。

有没有人知道这是否可行,如果是这样的话?

3 个答案:

答案 0 :(得分:0)

您应该能够使用Pyro在Jython和CPython之间发送方法调用及其返回数据。它的设计使“对象可以通过网络相互通信”,但没有理由相同的技术不能在一台机器上的两种不同类型的Python之间工作。

在Pyro文档中,您会找到一个simple example,它会向您展示启动并运行所需的所有内容。

答案 1 :(得分:0)

你应该看看

两者都是完全按照您的要求设计的框架。同时关注仍处于早期状态的JyNI(www.jyni.org),但将极大地改进Jython对大量Python框架的支持。

使用Pyro(https://pypi.python.org/pypi/Pyro4)您可能也可以解决您的任务,但请记住,它实际上并不是为此目的而设计的,而是针对分布式网络的东西。这个可以产生微妙的问题(例如性能不佳),使其成为一个前卫的解决方案。这不一定是这种情况,但如果有任务,我建议更喜欢预期的解决方案。 然而,这只是一个暗示和谦卑的警告,因为我实际上没有比较实际的命名方法。

答案 2 :(得分:0)

您可以完全避免使用Jython,并且仍然可以通过Pyro与python通信,在Java代码中使用Pyrolite。 Pyrolite是一个轻量级客户端库,可让您的Java程序直接与Pyro对话。只要你的java程序只是一个Pyro客户端就可以工作。