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

Docker运行Python镜像时出现No module named错误求助

问题原因及解决方案

核心问题

你的Dockerfile中ADD module/ .指令用法错误——它会将本地module目录下的所有内容直接复制到容器的工作目录,而非在容器中创建一个名为module的独立目录。这导致Python找不到名为module的模块(容器里根本不存在这个文件夹)。

修复步骤

  1. 修正模块复制指令
    将Dockerfile中的ADD module/ .替换为:

    COPY module/ module/
    

    这条指令会在容器工作目录下创建module文件夹,并将本地module目录的所有内容完整复制进去,和你本地的项目结构保持一致。

  2. 确认模块初始化文件
    确保容器中的module文件夹下存在__init__.py文件(可以是空文件),Python需要这个文件识别该目录为合法模块。根据你提供的项目结构,本地module目录下似乎没有直接的__init__.py,建议在本地module文件夹中添加一个,再重新构建镜像。

  3. 可选:显式设置Python路径
    如果修复后仍有问题,可在Dockerfile中添加环境变量,让Python明确找到模块所在目录:

    ENV PYTHONPATH="/usr/src/app"  # 替换为你的容器工作目录,默认是/,也可提前用WORKDIR指定
    

    或者在main.py开头添加以下代码:

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

修正后的完整Dockerfile示例

FROM continuumio/miniconda3

# 设置工作目录(可选,让结构更清晰)
WORKDIR /usr/src/app

COPY parcellation_env.yml .
RUN conda env create -f parcellation_env.yml

SHELL ["conda", "run", "-n", "parcellation_env", "/bin/bash", "-c"]

COPY main.py .
COPY module/ module/

ENTRYPOINT ["conda", "run", "-n", "parcellation_env", "python", "main.py", "-C", "white_matter_parcellation/config/config_point_autoencoder.yaml", "--use_splits", "-y"]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 04:32:43