Docker运行Python镜像报ModuleNotFoundError: No module named 'config'求助
报错核心原因
你构建的镜像中config.py存放在/backend根目录,而你启动的server.py运行时Python默认的模块搜索路径未包含/backend目录,所以执行import config时无法找到对应文件。
第一步:排查确认问题
- 验证
config.py是否成功复制到镜像对应路径,执行命令:docker run --rm <你的镜像名> ls /backend
如果输出结果中没有config.py,说明Dockerfile的COPY步骤执行失败,需检查本地文件路径是否正确;如果存在,就是Python模块搜索路径的问题。 - 临时修改
server.py代码,在import config前添加以下代码确认搜索路径:
import sys print(sys.path)
运行镜像后查看输出的路径列表,确认是否包含/backend。
解决方案
方案1:添加PYTHONPATH环境变量(最推荐,无业务代码侵入)
在Dockerfile的CMD指令前新增一行配置,将项目根目录加入Python搜索路径:
ENV PYTHONPATH=/backend
修改后重新构建镜像即可正常运行,不需要修改任何业务代码。
方案2:调整启动命令
将原CMD指令替换为以下任意一种:
- 以模块方式启动服务
CMD [ "python", "-m", "api.service.server" ]
- 切换到根目录后启动脚本
CMD ["sh", "-c", "cd /backend && python ./api/service/server.py"]
方案3:修改业务代码导入逻辑(不推荐,侵入性高)
在server.py的import config前手动添加根目录到搜索路径:
import sys sys.path.append('/backend') import config
内容的提问来源于stack exchange,提问作者amin
相关产品推荐
相关产品推荐

