PyScript 无法直接导入官方 `neo4j` 包,因其依赖 C 扩展和底层网络栈(如 `socket`、`ssl`),不兼容 WebAssembly 运行时;本文详解原因、验证方法,并提供可行的纯前端 Neo4j 连接方案。
PyScript 基于 Pyodide,在浏览器中通过 WebAssembly 运行 Python,但它仅支持纯 Python(pure-Python)包——即不包含 C 扩展、不调用系统级 API(如原生 socket、threading、subprocess)、且所有依赖均可被静态编译为 WebAssembly 的库。而官方 neo4j 包不符合这一前提:
- ✅ 使用纯 Python 编写部分逻辑
- ❌ 重度依赖 ssl、socket、select 等 CPython 标准库模块(在 Pyodide 中受限或未完全实现)
- ❌ 依赖 packaging、typing-extensions 等间接依赖,部分版本存在兼容性问题
- ❌ 无官方发布的 pyodide 兼容 wheel,也未收录于 Pyodide 官方包索引
因此,当你在 pyscript.toml 中声明 packages = [“neo4j”],PyScript 会尝试从 PyPI 下载并安装该包,但因缺失底层能力导致初始化卡死(hang)——这并非你的代码错误,而是架构层面的不兼容。
✅ 验证方式:检查包是否被 Pyodide 支持
可访问 Pyodide Packages Search 或运行以下 PyScript 片段快速验证: