Docker部署Rasa-SDK遇ModuleNotFoundError:缺失requests模块求助
解决Rasa SDK容器中requests模块找不到的问题
一、修正Dockerfile的正确写法
rasa/rasa-sdk镜像默认使用虚拟环境/opt/venv,直接用pip install可能会安装到系统环境而非Rasa使用的虚拟环境里,这是导致模块找不到的核心原因。以下是两种可靠的Dockerfile写法:
方式1:直接安装requests
FROM rasa/rasa-sdk:3.6.2 # 切换到root权限安装依赖,完成后切回默认用户1001 USER root RUN /opt/venv/bin/pip install requests USER 1001 # 复制你的actions代码到容器指定目录 COPY ./actions /app/actions
方式2:用requirements.txt管理依赖(推荐)
先在项目根目录创建requirements.txt,写入:
requests==2.31.0
然后编写Dockerfile:
FROM rasa/rasa-sdk:3.6.2 USER root # 复制依赖文件到容器临时目录 COPY requirements.txt /tmp/requirements.txt # 用虚拟环境的pip安装所有依赖 RUN /opt/venv/bin/pip install -r /tmp/requirements.txt USER 1001 COPY ./actions /app/actions
二、Docker Compose配置方案
如果不想修改Dockerfile,可在docker-compose.yml中通过命令临时安装(不推荐,每次启动容器都会重复安装):
version: '3.8' services: action_server: image: rasa/rasa-sdk:3.6.2 command: bash -c "/opt/venv/bin/pip install requests && rasa run actions" volumes: - ./actions:/app/actions ports: - "5055:5055"
推荐优先使用Dockerfile构建镜像,避免每次启动的重复安装开销。
验证方法
启动容器后,可通过以下命令进入容器检查依赖是否安装成功:
docker exec -it <容器ID> /bin/bash /opt/venv/bin/pip list | grep requests
如果能看到requests的版本信息,说明安装成功。
内容的提问来源于stack exchange,提问作者Diego A. Hernandez
相关产品推荐
相关产品推荐

