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

使用Gunicorn部署Flask应用遇ModuleNotFoundError问题求助

解决Gunicorn Docker环境下模块导入失败问题

问题原因

Gunicorn启动应用时,Python的模块搜索路径(sys.path)可能未包含当前脚本所在目录,或是Docker工作目录与项目结构不匹配,导致无法找到同目录下的db.py模块。

解决方案

方案1:修正Dockerfile的工作目录与文件复制路径

你的项目中server.py和db.py位于/service/app下,当前Dockerfile的WORKDIR /app未对应正确目录位置,调整如下:

# 将项目app目录的内容复制到容器的/app目录
COPY ./service/app /app
# 设置工作目录为/app
WORKDIR /app
# 启动Gunicorn
CMD ["gunicorn", "--workers=3", "server:main"]

调整后容器内/app目录直接包含两个脚本文件,Gunicorn启动时会将当前工作目录加入sys.path,即可正常导入db模块。

方案2:在server.py中手动添加模块搜索路径

若不想修改Dockerfile,可在server.py最顶部添加代码,强制将脚本所在目录加入Python模块搜索路径:

import sys
import os
# 获取当前脚本的所在目录
current_dir = os.path.dirname(os.path.abspath(__file__))
# 将目录加入搜索路径
if current_dir not in sys.path:
    sys.path.insert(0, current_dir)

# 后续正常导入db
import db

方案3:将app作为Python包运行

在/service/app目录下创建空的__init__.py文件,标记为Python包,再调整Dockerfile的工作目录和启动命令:

# 将整个service目录复制到容器内
COPY ./service /service
# 设置工作目录为项目根目录/service
WORKDIR /service
# 以包的形式启动应用
CMD ["gunicorn", "--workers=3", "app.server:main"]

同时修改server.py中的导入语句为相对导入:

from . import db

内容的提问来源于stack exchange,提问作者an.abi

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 03:33:13