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

Rasa Chatbot导入Python模块时遇Module Not Found Error求助

解决Rasa Actions调用外部模块的ModuleNotFoundError问题

1. 先确认项目结构与基础配置

先确保你的项目结构符合常规布局(若结构不同,对应调整路径即可):

你的项目根目录/
├── actions/
│   ├── __init__.py
│   └── actions.py  # 你要在这里调用函数
├── backend/
│   ├── __init__.py
│   └── negotiate.py  # 包含getAllProducts函数
└── ...  # Rasa其他核心文件(config.yml、domain.yml等)

⚠️ 关键:必须给backend和actions目录都添加空的__init__.py文件,Python才会把它们识别为可导入的模块。

2. 两种可行的导入方式

方式一:相对导入(适合同一项目内的模块调用)

在actions/actions.py里用相对路径导入:

from ..backend.negotiate import getAllProducts

注意:用这种方式时,必须从项目根目录启动actions服务,命令如下:

rasa run actions --actions actions.actions

方式二:手动添加项目根目录到Python搜索路径

如果相对导入无效,直接在actions/actions.py开头加这段代码,强制把项目根目录加入Python的路径列表:

import sys
import os
# 获取actions目录的父目录(也就是项目根目录)并添加到路径
sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))

from backend.negotiate import getAllProducts

这段代码能自动适配不同的文件位置,确保Python能找到backend模块。

3. 检查Actions服务的启动路径

绝大多数情况下,问题出在启动服务的工作目录不对:

  • ❌ 错误:从actions目录内部启动服务
  • ✅ 正确:切换到项目根目录再启动服务,命令示例:
# 先cd到你的项目根目录
rasa run actions

4. 先单独验证导入是否有效

可以先脱离Rasa服务,单独测试导入是否成功,避免服务启动的干扰:
在actions/actions.py开头加这段测试代码:

import sys
import os
sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))

try:
    from backend.negotiate import getAllProducts
    print("模块导入成功!")
except ModuleNotFoundError as e:
    print(f"导入失败:{e}")
    print("当前Python搜索路径:", sys.path)

然后直接运行python actions/actions.py,根据输出结果调整路径配置。

5. 检查虚拟环境一致性

如果你用了虚拟环境,确保安装Rasa、安装依赖、启动actions服务时用的是同一个虚拟环境,避免因环境隔离导致的路径混乱。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 05:01:02