跳转到主要内容

为Buildout (zc.buildout)安装Jython的配方

项目描述

这是一个Buildout配方,用于自动化下载、配置和部署Jython,即用Java实现的Python环境。

简介

Java是一种静态类型的、面向对象的编译型编程语言,具有庞大的标准应用程序编程接口(API)以及企业API。Python是一种动态类型的、面向对象的脚本语言,具有庞大的API,但企业功能较少。Jython通过在Java中实现Python运行时并提供对Java API的访问,将Python的灵活性带到Java的庞大规模中。

Buildout是一个文明、粗粒度的环境,用于管理可重复的软件部署。Buildout由配方驱动,每个配方都完成一个特定的目标,通常采用跨平台的方法。此配方sk.recipe.jython使用户能够在Buildout环境中自动下载、配置和部署Jython。

开发者信息

项目主页

http://code.google.com/p/buildout-recipes/

源代码库

http://buildout-recipes.googlecode.com/svn/recipes/sk.recipe.jython

问题跟踪器

http://code.google.com/p/buildout-recipes/issues/list

安装

由于这是一个 Buildout 配方,实际上并没有什么需要安装的。只需在 buildout 中提及配方名称,然后享受即可!例如,您的 buildout.cfg 可能如下所示

[buildout]
develop = src/myegg
parts =
    jython
    myegg
[jython]
recipe = sk.recipe.jython
[myegg]
recipe = zc.recipe.egg
python = jython
interpreter = mypy
eggs = myegg

上面的 buildout 实现以下功能

  • src/myegg 中指定了一个开发中的 Python egg。

  • 下载并安装 Jython。

  • 创建一个新的解释器 bin/mypy,它预先烘焙了 myegg 并由 Jython 驱动。

很简单!

支持选项

sk.recipe.jython 配方支持以下选项

url

(可选。)Jython 的发布版 URL。如果没有提供,则默认为 Jython 2.5.1 版本的 URL:http://sourceforge.net/projects/jython/files/jython/jython_installer-2.5.1.jar。此 URL 必须指向一个 Jython 安装器 jar 文件。

md5sum

(可选。)由 url 指出的 Jython 安装器的 MD5 哈希。如果指定,则下载的 Jython 发布版将与该哈希值进行核对,如果存在差异,则不会进行安装。如果同时缺少 md5sumurl,则配方将检查 2.5.1 版本的正确 MD5 哈希值,2ee978eff4306b23753b3fe9d7af5b37。

java

(可选。)Java 虚拟机可执行文件的全路径。如果没有指定,配方将通过 shell 路径查找。此 java 可执行文件将用于 安装 Jython,而不是用于 Jython 的运行时。例如:/usr/java/j2sdk/bin/java

jre

(可选。)用于 运行 Jython 的 Java 运行时或开发工具包的 home 目录。如果您希望 Jython 使用与安装器不同的运行时,请指定此选项。与上面的 java 选项不同,jre 选项期望 Java 运行时的 home 目录;即,该选项指定的目录中将有 binlib 等目录。例如:/System/Library/Frameworks/JavaVM.framework/Home

include-parts

(可选。)要安装的部分列表。请参阅下文“可安装部分”。如果没有指定,您将获得一个最小化的 Jython 安装,如果您正在开发基于 Jython 的应用程序,这很可能是您想要的。

所有选项都是可选的。真的。默认情况下,配方在 Buildout 的 parts/jython 目录中创建一个完整的 Jython 安装(您可以在 [buildout] 中覆盖部分目录)。这意味着您的配方可以像这样非常简单

[jython]
recipe = sk.recipe.jython

此配方导出两个在其他配方中很有用的值

location

此导出选项标识了配方安装 Jython 的位置。您可以使用其值作为 JYTHON_HOME 环境变量。

executable

此导出选项命名了 jython 可执行文件的路徑。您可以用它作为 Python 解释器,例如与 zc.recipe.egg 配方集合一起使用。

可安装部分

Jython 由多个部分组成,这些部分构成了一个安装。include-parts 选项指定了要包含在安装中的额外部分(默认情况下,不安装任何额外部分)。额外部分包括:

  • mod:库模块。

  • demo:演示和示例代码。

  • doc:文档。

  • src:Jython 的源代码。

示例用法

对于这个演示,我们将使用一个虚构的Jython安装jar包(实际上是一个空文件)和Java虚拟机(用Python编写)来模拟实际的Jython安装器所做的工作。实际上,它只是简单地回显给它的选项。这些文件位于testdata目录中。

>>> import os.path
>>> testdata = join(os.path.dirname(__file__), 'testdata')

文件java实际上是一个可执行的Python脚本,而jython-fake.jar是一个空文件。

让我们创建一个buildout来构建和安装Jython

>>> write(sample_buildout, 'buildout.cfg', '''
... [buildout]
... parts = jython
...
... [jython]
... recipe = sk.recipe.jython
... java = %(testdata)s/java
... url = file://%(testdata)s/jython-fake.jar
... ''' % dict(testdata=testdata))

这将“下载”假的Jython安装器并将其全部安装。运行buildout

>>> print system(buildout)
Installing jython.
"JVM": Jython installer in file ".../jython-fake.jar"
"JVM": Installer options: ['--silent', '--directory', '/sample-buildout/parts/jython']

现在,parts目录应该已经安装了Jython

>>> ls(sample_buildout, 'parts')
d jython

使用附加选项

让我们练习使用jreinclude-parts选项,指定一个神话般的JRE在/usr/mythical/java/j3sdk,并请求安装文档(doc)和源代码(src

>>> write(sample_buildout, 'buildout.cfg', '''
... [buildout]
... parts = jython
...
... [jython]
... recipe = sk.recipe.jython
... java = %(testdata)s/java
... jre = /usr/mythical/java/j3sdk
... include-parts =
...     doc
...     src
... url = file://%(testdata)s/jython-fake.jar
... ''' % dict(testdata=testdata))

重新运行buildout现在给出

>>> print system(buildout)
Uninstalling jython.
Installing jython.
"JVM": Jython installer in file ".../jython-fake.jar"
"JVM": Installer options: ['--silent', '--directory', '/sample-buildout/parts/jython', '--jre', '/usr/mythical/java/j3sdk', '--include', 'doc', 'src']

完美。

MD5散列

让我们重写buildout但注入一个错误:错误的MD5散列

>>> write(sample_buildout, 'buildout.cfg',
... '''
... [buildout]
... parts = jython
...
... [jython]
... recipe = sk.recipe.jython
... java = %(testdata)s/java
... md5sum = c120503f1e327388bd0b6bbdee530733
... url = file://%(testdata)s/jython-fake.jar
... ''' % dict(testdata=testdata))

上面显示的散列不是空文件(即jython-fake.jar)的正确MD5。运行buildout应该退出

>>> print system(buildout)
Uninstalling jython.
Installing jython.
While:
  Installing jython.
Error: MD5 checksum mismatch...

指定正确的MD5

>>> write(sample_buildout, 'buildout.cfg',
... '''
... [buildout]
... parts = jython
...
... [jython]
... recipe = sk.recipe.jython
... java = %(testdata)s/java
... md5sum = d41d8cd98f00b204e9800998ecf8427e
... url = file://%(testdata)s/jython-fake.jar
... ''' % dict(testdata=testdata))

解决问题

>>> print system(buildout)
Installing jython.
"JVM": Jython installer in file ".../jython-fake.jar"
"JVM": Installer options: ['--silent', '--directory', '/sample-buildout/parts/jython']

基本上就是这样。

变更日志

0.0.0

这个版本注定将成为最终的GA版本。

项目详情


下载文件

下载您平台的文件。如果您不确定选择哪一个,请了解更多关于安装包的信息。

源代码分发

sk.recipe.jython-0.0.0.tar.gz (8.7 kB 查看散列)

上传时间 源代码

构建分发

sk.recipe.jython-0.0.0-py2.6.egg (14.9 kB 查看散列)

上传时间 源代码

sk.recipe.jython-0.0.0-py2.5.egg (14.9 kB 查看散列)

上传时间 源代码

sk.recipe.jython-0.0.0-py2.4.egg (14.9 kB 查看散列)

上传时间 源代码

支持者

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误记录 StatusPage StatusPage 状态页面