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

部署Gunicorn+Flask应用至Cloud Run时遇ModuleNotFound错误

问题:Cloud Run部署Flask+Gunicorn服务出现ModuleNotFoundError

将基于Gunicorn的简易Python Flask API部署到Cloud Run时,始终抛出ModuleNotFoundError: No module named 'server'。本地通过Docker或docker-compose运行完全正常,部署到Cloud Run初期无错误,但添加挂载Secret(路径/app/conf.json)和环境变量后调用服务时错误出现,暂无法确定二者是否相关。

Dockerfile内容

FROM python:3.10-slim

RUN apt-get update && apt-get upgrade -y
RUN pip install --upgrade pip

# Copy local code to the container image.
ENV APP_HOME /app
ENV PORT 8080
WORKDIR $APP_HOME
COPY requirements.txt requirements.txt

# Install production dependencies.
RUN pip install --no-cache-dir -r requirements.txt

COPY app .

CMD exec gunicorn --bind :$PORT --workers 1 --threads 4 server:app

文件夹结构

- database-api
  - app
     configuration.py
     util.py
     server.py
  Dockerfile
  requirement.txt
  cloudbuild.yaml

Cloud Build配置

steps:
- name: 'gcr.io/cloud-builders/docker'
  args:
  - 'build'
  - '-t'
  - 'eu.gcr.io/$PROJECT_ID/database-api:$TAG_NAME'
  - '-f'
  - './Dockerfile'
  - '.'

images:
- 'eu.gcr.io/$PROJECT_ID/database-api:$TAG_NAME'

错误日志

Traceback (most recent call last):
  File "/usr/local/lib/python3.10/site-packages/gunicorn/arbiter.py", line 609, in spawn_worker
    worker.init_process()
  File "/usr/local/lib/python3.10/site-packages/gunicorn/workers/gthread.py", line 95, in init_process
    super().init_process()
  File "/usr/local/lib/python3.10/site-packages/gunicorn/workers/base.py", line 134, in init_process
    self.load_wsgi()
  File "/usr/local/lib/python3.10/site-packages/gunicorn/workers/base.py", line 146, in load_wsgiapp
    self.wsgi = self.app.wsgi()
  File "/usr/local/lib/python3.10/site-packages/gunicorn/app/base.py", line 67, in wsgi
    self.callable = self.load()
  File "/usr/local/lib/python3.10/site-packages/gunicorn/app/wsgiapp.py", line 58, in load
    return self.load_wsgiapp()
  File "/usr/local/lib/python3.10/site-packages/gunicorn/app/wsgiapp.py", line 48, in load_wsgiapp
    return util.import_app(self.app_uri)
  File "/usr/local/lib/python3.10/site-packages/gunicorn/util.py", line 371, in import_app
    mod = importlib.import_module(module)
  File "/usr/local/lib/python3.10/importlib/__init__.py", line 126, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 1050, in _gcd_import
  File "<frozen importlib._bootstrap>", line 1027, in _find_and_load
  File "<frozen importlib._bootstrap>", line 1004, in _find_and_load_unlocked
ModuleNotFoundError: No module named 'server'

已尝试的解决方案

  • 修改文件路径配置
  • 给Gunicorn添加chdir参数
  • 调整文件夹结构
  • 使用app.server作为模块名启动Gunicorn
  • 重建Cloud Run服务
  • 更换Python版本及相关依赖包版本
  • 重命名server.py模块
  • 在app目录添加__init__.py
  • 验证文件路径正确且无文件丢失(无dockerignore/gitignore导致文件遗漏)

其他相同结构的项目可正常运行,官方指南也无相关问题说明,仅当前项目部署到Cloud Run后出现故障,求问问题根源及解决办法。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 09:15:27