PyScript运行报No module named 'theblockchainapi'错误如何解决
问题原因
<py-env>标签位置错误:你把标签写在了</html>整个文档闭合标签的外面,HTML解析器不会识别文档结构外的标签,里面声明的依赖根本不会被PyScript加载。- 包兼容性问题:PyScript底层基于Pyodide(浏览器端WASM编译的Python运行时),仅支持纯Python包、或提前编译为WASM适配Pyodide的带C扩展的包。
theblockchainapi依赖多个未提供Pyodide适配版本的原生扩展,且没有被Pyodide官方包仓库收录,就算标签位置正确,也无法直接安装到浏览器端Python环境中。 - 你使用的是非常早期的PyScript Alpha版本,这个版本的依赖加载逻辑本身存在大量已知bug,对第三方包的兼容度极低。
修复方法
- 第一步先修正HTML结构:把
<py-env>标签移动到<head>标签内部,和PyScript的CSS、JS引用放在同级位置,保证解析器能正常读取依赖声明。 - 不要尝试直接在前端PyScript环境中运行
theblockchainapi,这类带原生依赖的Web3 SDK目前没有适配浏览器端WASM Python环境的可行方案,正确实现路径是:- 把所有调用
theblockchainapi的逻辑部署在你自己的后端Python服务上,封装成普通HTTP接口 - 前端PyScript代码只负责收集用户输入的钱包地址,通过
pyfetch向后端接口发请求,拿到NFT校验结果后渲染到页面即可
- 把所有调用
- 如果确实需要纯前端实现相关逻辑,替换
theblockchainapi为纯Python实现、无原生C扩展依赖的Solana SDK,再在<py-env>中声明对应包的地址。
修正结构后的基础代码框架如下:
<!DOCTYPE html> <html lang="en"> <head> <link rel="stylesheet" href="https://pyscript.net/alpha/pyscript.css" /> <script defer src="https://pyscript.net/alpha/pyscript.js"></script> <title>Document</title> <!-- py-env必须放在head内部,不能放在html闭合标签外 --> <py-env> <!-- 仅声明Pyodide源支持的纯Python依赖 --> </py-env> </head> <body> <div> <input type="text" id="address"> <br> <button id="button">Verify NFT</button> <div id="out">none</div> </div> </body> <py-script> # 此处编写前端交互、请求后端接口的逻辑,不要直接导入theblockchainapi </py-script> </html>
内容的提问来源于stack exchange,提问作者24Doggi
相关产品推荐
相关产品推荐

