跳转到主要内容

在JavaScript VM上运行Python字节码的工具。

项目描述

在浏览器中运行Python字节码的工具。

这是一段实验性代码。如果它坏了,你可以保留所有闪亮的部件。

它做什么

  • 实现了一个Python 3.4字节码机器,可以处理函数调用和基本类定义。

  • 将Base64编码的字节码解包成代码对象

  • 实现了大多数常见的Python VM操作码

  • 允许使用import dom访问DOM

它不做什么

  • 在整数和浮点数学之间做出良好的区分

  • 任何尝试处理Unicode。

  • 在Python中按相同的方式引发错误(尤其是在数学操作期间发生的TypeError)

  • 支持所有Python内置函数

  • 支持完整的Python标准库

  • 允许类继承

快速入门

testserver目录中包含一个最小的Django项目,该项目将向您的浏览器提供Python字节码并执行它。要运行此项目,您需要运行Python 3.4。将Django 1.8安装到您的虚拟环境中;然后,在shell提示符下

$ cd testserver
$ ./manage.py runserver

您可以在浏览器中加载http://127.0.0.1:8000。当页面加载时,您将看到一组按钮,对应于已嵌入页面的Python模块

  • PyStone性能基准测试。Python字节码嵌入到HTML文件中作为字符串。

  • sample.py,一个简单的Python示例,演示了基本VM功能。

    在服务器上动态生成并供客户端使用的PYC内容。此文件导入第二个文件other.py,以演示如何进行导入。

点击其中一个按钮,代码将运行;stdout/stderr已被重定向到网页,因此如果脚本有输出,您将看到它。

要开始修改,请更改testserver/sample.py,重新加载页面,然后点击按钮。

文档

可以在Read The Docs上找到Batavia的文档。

为什么叫“Batavia”?

1628年10月27日,《指挥官》弗朗西斯科·佩尔塞特接管了《Batavia》,与340名乘客和船员一起,从特克塞尔起航。他们的目的地是香料群岛——更具体地说,是荷兰东印度公司(现属于印度尼西亚)的爪哇岛。

《Batavia》是一艘爪哇船( rimshot!)。

有趣的是,在航行过程中,Ariaen Jacobsz和《underkoopman》Jeronimus Cornelisz煽动叛乱,因为他们不想去爪哇——他们想逃到别的地方开始新生活。由于叛乱,1629年6月4日,《Batavia》在珀斯西约450公里的Houtman Abrolhos的Morning Reef(摩晨礁)搁浅,这也是本项目构思的地方。

Batavia的完整故事为大多数西澳大利亚学校儿童所熟知,是一部关于阴谋、野蛮和谋杀的恐怖故事。它提醒我们,当你强迫人们去爪哇会发生什么::-)

在20世纪70年代,《Batavia》的残骸被打捞上来,现在陈列在西澳大利亚海事博物馆的沉船画廊中。

社区

《Batavia》是BeeWare套件的一部分。您可以通过以下方式与社区交流:

贡献

如果您在使用《Batavia》时遇到问题,请在GitHub上记录下来。如果您想贡献代码,请Fork代码提交拉取请求

项目详情


支持者: