You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Panel应用转Pyodide-Worker时遇ModuleNotFoundError:找不到mymodule

Panel Pyodide部署时ModuleNotFoundError问题解决

问题背景

本地执行panel serve script.py --autoreload运行Panel应用完全正常,但使用panel convert script.py --to pyodide-worker --out pyodide转换为Pyodide HTML后,通过python3 -m http.server访问生成的页面时,出现ModuleNotFoundError: no module named 'mymodule'错误。已尝试手动追加本地路径到sys.path、使用--requirements ./mymodule参数,均未解决。

项目文件结构:

├── script.py
└── mymodule/
    ├── __init__.py
    ├── my_obj.py
    ├── param_classes.py
    └── compute_obj.py

解决方案

方案1:显式指定额外模块

panel convert不会自动识别并打包本地自定义模块,需通过--extra-modules参数明确指定模块路径,执行以下转换命令:

panel convert script.py --to pyodide-worker --out pyodide --extra-modules ./mymodule

该参数会将指定的本地模块目录复制到Pyodide运行环境中,确保应用能正确导入mymodule。

方案2:打包模块为wheel后指定依赖

  1. 若使用Poetry管理环境,先将mymodule打包为wheel文件:
poetry build
  1. 转换时通过--requirements参数指定生成的wheel文件路径:
panel convert script.py --to pyodide-worker --out pyodide --requirements dist/mymodule-0.1.0-py3-none-any.whl

此方法适合模块结构复杂、包含第三方依赖的场景。

方案3:动态添加模块路径到Pyodide环境

在script.py的最开头添加以下代码,仅在Pyodide环境中生效,手动将模块所在目录加入sys.path:

import sys
from pathlib import Path

if 'pyodide' in sys.modules:
    # 将当前脚本所在目录添加到Python路径
    sys.path.append(str(Path(__file__).parent))

注意:需确保mymodule目录与生成的HTML文件处于同一HTTP服务路径下,否则需调整路径逻辑。

验证

  1. 执行转换命令后,检查pyodide输出目录:方案1需确认mymodule文件夹已被复制;方案2需确认wheel已被正确安装到Pyodide环境。
  2. 重启HTTP服务器,访问http://localhost:8000/pyodide/script.html,确认错误消失。

内容的提问来源于stack exchange,提问作者GoneAsync

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 12:45:37