使用模块打包Jython以便于安装

时间:2012-03-26 19:45:55

标签: python maven jython packaging apache-pig

我刚刚构建了一个使用Python模块导入和一些Java jar的Jython项目。在我自己的计算机上,因为我只是想完成这件事,我通过硬编码sys.path并安装我想要的每个模块和jar,以非常黑客的方式工作。这绝对不是我想要发布版本的东西。我已经读过能够将所有内容打包到一个独立的Jython jar中,这对我来说听起来不错。我有什么理由不这样做吗?如果没有,有没有人可以指点我的最佳方法指南?我正在通过PIG运行整个事情,所以拥有一个可调用的Jython jar是理想的。

我知道在SO上已经存在一些类似的问题,但这些问题的答案看起来很旧,而且给出的文档(例如MavenJython)非常差。我已经查看了MavenJythonJip,但我无法在两者之间做出真正的决定,而且我也没有找到足够的信息。这个问题的理想答案我应该使用什么,为什么要使用它,并简要介绍一下如何使用它。任何一个链接也很棒。

谢谢!

1 个答案:

答案 0 :(得分:0)

请详细说明如何改进MavenJython文档。事情自2011年以来没有改变(你可能have seen this answer),这不是很久以前的事了。有网站,但作为程序员,你可能只想阅读jython-compile-maven-plugin-test项目的源代码,这只是200行代码。最好将此软件包用作您自己项目的起点。

分配理念

Java软件分发(和Windows软件分发)通常的工作方式是您打包所需的一切。所以,是的,一个独立的Jython jar是合适的。缺点是每个软件都可能使用不同的Jython版本,好处是这可能是您想要的(更新可能会破坏事物)。这也是MavenJython方法,将所有内容打包成正确的版本。

Python和Linux软件发行版只安装软件包,在安装时检查兼容性。这是jip方法,假设您已经拥有Jython,安装软件的任何人都可以通过安装正确的版本来解决兼容性问题。

差异

我不能说jip,我没有用过它。从我在演示中看到的内容,jip旨在为Python包提供对Maven Java库的访问。它似乎也能够从Jython代码生成maven包。所以你可以使用MavenJython或jip来实现你的目标。试试吧。

使用MavenJython构建的可交付成果分发Jython,而jip不发布。

  • 如果您想指导已经使用jython并且不熟悉Maven的程序员,他们想要使用您的库来获取您的jython库包,那么jip可能就是您的选择。
  • 如果你想为程序员编写Jython库并分发它们,你可以使用MavenJython或jip。
  • 如果您有一个软件包最终将作为客户的可交付成果,也可能使用Jython代码和Jython软件包,也许还为用户提供程序内脚本,请使用MavenJython。它允许您创建独立的可执行文件。

猪用例

要通过pig运行jython,安装jython并将jython源放在路径中就足够了 - 请参阅embed python section of the pig manual。 jip可以适合在本地安装jython包,但如果您只想运行代码则不需要。如果你想分发使用pig的软件,并在客户端计算机上安装pig,jython和你的代码,MavenJython可以为你做到这一点。