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

使用GitLab CI部署Serverless Flask至Lambda时遇spawn python3.8 ENOENT错误

解决GitLab CI部署Serverless Flask到AWS Lambda时的spawn python3.8 ENOENT错误

错误提示spawn python3.8 ENOENT说明Serverless框架在执行过程中找不到python3.8可执行文件——本地环境正常是因为你的系统已经配置好Python3.8的可调用路径,但GitLab CI容器环境中虽然安装了Python3.8,却存在路径关联或命令匹配问题。

解决方案1:为Python3.8创建全局软链接

在CI的before_script中添加软链接命令,让python/python3命令直接指向Python3.8,确保Serverless能找到对应版本:

修改后的.gitlab-ci.yml:

image: ubuntu:latest

stages:
  - deploy

dev:
  only:
    - develop
  stage: deploy
  before_script:
    - apt-get update
    - DEBIAN_FRONTEND=noninteractive apt-get install -y software-properties-common && add-apt-repository ppa:deadsnakes/ppa && apt-get update && apt-get install -y python3.8 python3-pip && rm -rf /var/lib/apt/lists/*
    # 添加软链接,将python/python3指向python3.8
    - ln -s /usr/bin/python3.8 /usr/bin/python
    - ln -s /usr/bin/python3.8 /usr/bin/python3
    - apt update
    - apt install -y nodejs npm
    - npm install -g serverless
    - npm install
  script:
    - serverless deploy --stage dev
  environment: dev

注意:原脚本中的ARG DEBIAN_FRONTEND=noninteractive是Dockerfile语法,在CI脚本中需改为环境变量前缀形式,避免执行报错。

解决方案2:在Serverless配置中指定Python路径

直接在serverless.yml中告诉插件Python3.8的具体路径,避免依赖系统默认命令:

修改后的serverless.yml:

service: serverless-flask

plugins:
  - serverless-python-requirements
  - serverless-wsgi

custom:
  wsgi:
    app: app.app
    packRequirements: false
  pythonRequirements:
    dockerizePip: non-linux
    pythonBin: /usr/bin/python3.8  # 显式指定Python3.8路径

provider:
  name: aws
  runtime: python3.8
  region: eu-west-3
  memorySize: 256
  timeout: 15

functions:
  app:
    handler: wsgi_handler.handler
    environment: ${file(env.${opt:stage, self:provider.stage}.json)}
    events:
      - http: ANY /
      - http: ANY /{proxy+}

可以在CI脚本中添加which python3.8命令,确认路径是否与配置一致。

解决方案3:使用预配置Python3.8的镜像

放弃手动安装Python,直接使用官方Python3.8镜像,避免环境配置问题:

修改后的.gitlab-ci.yml:

image: python:3.8-slim

stages:
  - deploy

dev:
  only:
    - develop
  stage: deploy
  before_script:
    - apt-get update && apt-get install -y nodejs npm && rm -rf /var/lib/apt/lists/*
    - npm install -g serverless
    - npm install
  script:
    - serverless deploy --stage dev
  environment: dev

该镜像自带Python3.8,且python/python3命令默认指向3.8版本,无需额外配置。

内容的提问来源于stack exchange,提问作者Léo Le Henaff

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 11:05:19