解决coze-studio的代码节点报错问题
摘要: 在Docker部署coze-studio后,工作流中的代码节点执行失败,报错显示无法下载pyodide-sandbox包。通过分析GitHub相关issue,发现是镜像中包路径配置问题。进入容器测试发现deno run命令可正常执行,但代码节点仍报错。最终解决方案是进入容器直接修改sandbox.py文件,将PKG_NAME改为jsr:@eyurtsev/pyodide-sandbox,重
1. 问题说明
当使用docker部署coze-studio之后,运行的功能都挺正常,但是在工作流中使用代码节点的时候,测试代码节点则会出现如下的报错:
"Function execution failed, please check the code of the function. Detail: exec failed, stdout=, stderr=\u001b[0m\u001b[32mDownload\u001b[0m https://jsr.io/@langchain/pyodide-sandbox/meta.json\n\u001b[0m\u001b[1m\u001b[31merror\u001b[0m: JSR package manifest for '@langchain/pyodide-sandbox' failed to load. Import 'https://jsr.io/@langchain/pyodide-sandbox/meta.json' failed.\n, sandbox_err="
根据这个错误来看,似乎是运行的Python无法下载pyodide-sandbox包……
2. 问题分析
对应的问题也在github issue上也有讨论,结论就是代码中的配置的包路径在镜像中无法访问,也可以按照上面的说法先进入容器内部看一下是否有正常的输出。
首先,使用命令查看容器的id:
docker ps | grep coze-server
然后看到这样的输出:
611f64b33d46 cozedev/coze-studio-server:latest "/app/opencoze" 3 days ago Up 29 minutes 8888/tcp coze-server
记住最前面这个id,我这里就是611f64b33d46。
然后我们进入到容器内部:
docker exec -it 611f64b33d46 sh
然后输入命令,是否和我一样的输出:
# 命令
deno run -A jsr:@eyurtsev/pyodide-sandbox -c "print('Hello, World!')"
# 输出
{"stdout":"Hello, World!","stderr":null,"result":null,"success":true,"sessionMetadata":{"created":"2025-11-04T02:32:09.088Z","lastModified":"2025-11-04T02:32:09.152Z","packages":[]}}
如果和我一样的输出,那就继续操作,如果是其他的输出,需要去解决网络问题了,后面的内容可以不用看了……
3. 问题解决
首先我也按照github issue上讨论的方案进行处理,也就是修改代码,修改的代码是:
backend/infra/coderunner/impl/script/sandbox.py的第10 行
修改为:
PKG_NAME = "jsr:@eyurtsev/pyodide-sandbox"
然后我重新打包镜像,发现仍然报错,所以不行。
所以,我的想法是进入到容器内部进行代码的修改。
还是上述的命令来进入容器:
docker exec -it 611f64b33d46 sh
然后,我们直接使用命令打开sandbox.py文件:
vi sandbox.py
然后修改第10行为如下的内容:
PKG_NAME = "jsr:@eyurtsev/pyodide-sandbox"
退出vi的编辑之后,再使用命令退出容器:
exit
之后我们重启容器:
docker restart 611f64b33d46
这个时候再打开我们的工作流,测试代码节点,发现一切正常了,完事!
更多推荐
所有评论(0)