den run -A jsr:@langchain/pyodide-sandbox \ -c "import numpy as np; print(np.arange(5))"
首次执行会看到:
{"stdout":"Loading numpyDidn't find package numpy-2.0.2-cp312-cp312-pyodide_2024_0_wasm32.whl locally, attempting to load from https://cdn.jsdelivr.net/pyodide/v0.27.7/full/Package numpy-2.0.2-cp312-cp312-pyodide_2024_0_wasm32.whl loaded from https://cdn.jsdelivr.net/pyodide/v0.27.7/full/, caching the wheel in node_modules for future use.Loaded numpy[0 1 2 3 4]","stderr":null,"result":null,"success":true,"sessionMetadata":{"created":"2026-01-22T02:14:13.300Z","lastModified":"2026-01-22T02:14:17.036Z","packages":["numpy"]}}
这是 正常行为,表示:
Pyodide 正在下载依赖
下载完成后会缓存到 node_modules
后续执行不会再下载
六、Stateful 会话(保持执行状态)
默认情况下,每次执行是 无状态的。
如果你希望多次执行共享变量,需要开启 stateful 模式。
6.1 创建 state
den run -A jsr:@langchain/pyodide-sandbox \ -s -c "x = 42"
den run -A jsr:@langchain/pyodide-sandbox \ -s \ -b '<sessionBytes>'\ -m '<sessionMetadata>'\ -c "print(x)"
例子
den run -A jsr:@langchain/pyodide-sandbox \ -s \ -b '[128,4,149,168,0,0,0,0,0,0,0,140,10,100,105,108,108,46,95,100,105,108,108,148,140,14,95,105,109,112,111,114,116,95,109,111,100,117,108,101,148,147,148,140,8,95,95,109,97,105,110,95,95,148,133,148,82,148,125,148,40,140,8,95,95,110,97,109,101,95,95,148,104,3,140,7,95,95,100,111,99,95,95,148,78,140,11,95,95,112,97,99,107,97,103,101,95,95,148,78,140,8,95,95,115,112,101,99,95,95,148,78,140,15,95,95,97,110,110,111,116,97,116,105,111,110,115,95,95,148,125,148,140,13,95,112,121,111,100,105,100,101,95,99,111,114,101,148,104,2,140,13,95,112,121,111,100,105,100,101,95,99,111,114,101,148,133,148,82,148,140,1,120,148,75,42,117,98,46]'\ -m '{"created":"2026-01-22T02:14:55.543Z","lastModified":"2026-01-22T02:14:56.955Z","packages":["dill"]}'\ -c "print(x)"