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

如何在Linux GitLab Runner下通过CI/CD将Python代码打包为Windows exe

Linux架构GitLab Runner生成Windows exe可执行文件方案

完全可以在现有Linux Runner环境下实现自动打包,PyInstaller本身不支持跨操作系统交叉编译,因此核心实现逻辑是通过Wine兼容层在Linux环境中模拟Windows运行环境完成打包,具体方案如下:

方案实现步骤

  • 第一步:准备CI运行镜像,推荐直接使用预装了Wine的公共Docker镜像,也可以基于Debian/Ubuntu基础镜像自行安装Wine、Windows版Python、Windows版PyInstaller,提前预装依赖可以大幅提升CI执行效率
  • 第二步:编写.gitlab-ci.yml配置,指定job仅在master分支代码更新时触发,通过Wine调用Windows版本的PyInstaller执行打包命令
  • 第三步:配置制品规则,将打包生成的exe文件作为CI制品保留,可直接下载使用

示例CI配置

stages:
  - build

build_windows_exe:
  stage: build
  # 可替换为你自行构建的预装了Windows Python、PyInstaller的Wine镜像
  image: scottyhardy/docker-wine:latest
  # 仅master分支合并/推送时触发
  only:
    - master
  script:
    # 以下安装Python、PyInstaller的步骤建议预构建到镜像中,避免每次CI重复执行
    # - wine msiexec /i python-3.10.11-amd64.exe /qn ADDLOCAL=All TARGETDIR=C:\Python310
    # - wine C:\Python310\python.exe -m pip install pyinstaller -i https://pypi.tuna.tsinghua.edu.cn/simple
    # 安装项目依赖
    - wine C:\Python310\python.exe -m pip install -r requirements.txt
    # 执行打包,逻辑和你本地Windows环境的打包命令完全一致
    - wine C:\Python310\Scripts\pyinstaller.exe app.py -F
  artifacts:
    paths:
      # 打包生成的exe路径,按需调整
      - dist/app.exe
    expire_in: 30d

注意事项

  • 打包所用的Windows Python版本、PyInstaller版本需要和你本地打包时的版本保持一致,避免出现兼容性问题
  • 如果项目依赖包含带C扩展的第三方库(如numpy、pandas等),Wine环境会自动安装对应Windows版本的二进制包,和原生Windows打包效果完全一致
  • Wine模拟环境下的打包速度会比原生Windows环境慢20%~50%,属于正常损耗

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 04:54:00