为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。
开发者信息
安装
由于这是一个 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 发布版将与该哈希值进行核对,如果存在差异,则不会进行安装。如果同时缺少 md5sum 和 url,则配方将检查 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 目录;即,该选项指定的目录中将有 bin、lib 等目录。例如:/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
使用附加选项
让我们练习使用jre和include-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的散列
算法 | 哈希摘要 | |
---|---|---|
SHA256 | ae88d1ff18812cb9049f7e2b02a891c53154e87ee523b7b1244d72865f73082c |
|
MD5 | af0294051de3c4c15935d557c268337b |
|
BLAKE2b-256 | 9c47e4206f3a4e1ffcf959356cd9e6dc173a13807be05ef3cfedda597d6c3a23 |
sk.recipe.jython-0.0.0-py2.6.egg的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 52c223b122bab1f4235a4183c40a02a2e4c9e46a13287116eead24c3e76c6d2c |
|
MD5 | 355cc87b2ad8c20caf028937dc7476a0 |
|
BLAKE2b-256 | 8170a0e6a5a49459adb1afed52f289ec031ec587c1369d04054ef8faa230dcc4 |
sk.recipe.jython-0.0.0-py2.5.egg的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 3c6d35ce615aa93481f28f60470ae0078592aeb55904061477b4a64cb67d0bd1 |
|
MD5 | 95c9c172b343d9895808dda871149b83 |
|
BLAKE2b-256 | e0f9a5438616c3050f06ca94bedd7b4f1d1fff6031d8434d53607c425356ecea |
sk.recipe.jython-0.0.0-py2.4.egg的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 1c8f3c1ef2e1c7d47c453c3bcf661ac23cd458ae506c78025acf71ff72398c87 |
|
MD5 | 433c01780b5ecbb987a75440e9f6660f |
|
BLAKE2b-256 | b950616e0dba715a20496427fdc83e4d0b5d0df537a19aebcd5d16bdef4874ea |