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

Docker Compose运行Python代码时出现“No module named”依赖错误

问题解决步骤

核心原因分析

单独docker run正常但docker-compose报错,大概率是镜像版本不一致或本地挂载目录干扰Python模块搜索路径导致的。


1. 强制重新构建镜像(最常见解决方法)

你可能修改了Dockerfile添加依赖,但docker-compose默认复用旧镜像,导致依赖未安装。执行以下命令强制重新构建:

# 强制重新构建镜像,忽略缓存
docker-compose build --no-cache

# 重新运行服务
COMMAND='python main.py "hostname" 10.0.0.1,10.0.0.2,192.168.0.5' docker-compose up

2. 检查本地挂载目录的干扰项

本地./code目录如果存在以下内容,会导致Python模块搜索路径异常:

  • 与依赖包同名的文件(如loguru.py)
  • 虚拟环境文件夹(如venv)
  • 修改Python路径的.pth文件

解决方法:

  • 临时重命名本地./code目录,重新运行docker-compose up验证是否恢复正常
  • 删除目录内的干扰文件/文件夹

3. 验证镜像内依赖是否正确安装

运行临时容器检查镜像内的Python包:

# 构建并获取镜像ID,然后进入容器查看依赖列表
docker run --rm -it $(docker-compose build --quiet host_a) pip list

确认输出中包含loguru、psutil等所有需要的依赖包。

4. 优化Dockerfile(避免挂载目录干扰)

建议将代码直接复制到镜像中,而非通过volume挂载,保证镜像独立性:

FROM python:3.9-slim

RUN apt-get update && apt-get install -y openssh-server
RUN pip install \
    cryptography \
    bcrypt \
    pynacl \
    paramiko \
    scp \
    loguru \
    pydantic \
    psutil

WORKDIR /code
# 将本地code目录的文件复制到镜像内(根据实际路径调整)
COPY ../code/ .

CMD ["/usr/sbin/sshd", "-D", "-h", "/etc/ssh/key"]

修改后重新构建运行,无需挂载volume即可执行代码。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 09:52:01