文档 / 概览

项目概览

以 JavaScript 实现 Python 3.15 语言运行时与标准库,核心目标是可验证的行为兼容。

这个项目是什么

node-for-python 是一个在 JavaScript 环境中运行 Python 语义的实现。它把 Python 源码读入 tokenizer、parser 和 interpreter,再把标准库模块接到同一个运行时上。项目面向需要在浏览器、Node.js 或 Worker 中执行 Python 代码的场景,强调源码可读、测试可重复以及每个兼容性结论都有可观察的证据。运行时使用原生 ESM,模块之间通过明确的导入关系协作,不要求调用系统 Python 才能执行已经打包的代码。

项目的目标版本是 CPython 3.15。这里的“兼容”按层次理解:词法层关注 token,语法层关注 AST 和错误,解释器关注输出与异常,标准库关注公开 API 的结果和边界行为。因此,某个模块已经出现在清单中,不等于它的所有边界都已经覆盖;详细状态请查看模块清单。

能做什么

不能做什么

边界含义
不是完整 CPython目标是逐步覆盖 Python 3.15 的语言与标准库行为,未覆盖 API 不能假定存在。
不是任意 Python 扩展宿主依赖 CPython C 扩展、操作系统动态库或原生 ABI 的代码不属于纯 JavaScript 运行时能力。
不是安全沙箱保证Worker 能隔离页面线程,但应用仍需自行限制网络、文件和消息权限。
不是性能等价替代解释器和跨层对象转换有成本;需要大量数值计算时应评估专用运行时。
不是自动完成全部兼容性模块状态和测试结果会随仓库数据变化,使用前应查看当前快照与对应测试。

四层架构概览

Tokenizer 将字符变成带位置的 token;Parser 将 token 变成 AST;Interpreter 在作用域和异常规则下执行 AST;libstd 为导入器提供 Python 标准库模块。每层都可以单独测试,也可以通过下一层组合成完整程序路径。数据流从源码向下传递,错误在产生它的层被归类,调用方因此能区分语法错误、运行时异常和模块缺失。

模块进度的统计口径

模块页的总数来自仓库内置的模块表,构建器逐项读取模块目录、说明和测试文件,并根据状态函数归类为已实现、正在实现或未实现。统计不读取手写进度说明中的旧数字,也不会把目录数量直接当作完成数量。测试文件数量则按仓库实际存在的 *.test.mjs 文件统计;它表示测试入口的数量,不等于断言数量。快照时间标记数据生成时刻,HTTP 桥接开启后页面可以重新获取实时状态。

下载与上手

源码包可从下载入口获取,入口会选择可用节点并提供校验信息。下载后使用 Node.js 22 或更新版本,在仓库根目录运行测试命令;如果只想体验语义,可以直接打开在线游乐场。推荐先读快速开始,再读架构了解导入和执行边界。遇到结果差异时,按照差分测试的层次定位,不要只根据最终输出猜测问题来源。

继续阅读

快速开始说明本地命令和下载方式;架构说明运行时分层、标准库接线与浏览器宿主;差分测试说明如何建立固定对照和判断失败。文档目录可以直接跳转到各篇页面及其章节。