0

0

解决 GitHub 自托管 Runner 中 Python 版本设置问题

花韻仙語

花韻仙語

发布时间:2025-11-04 14:13:01

|

475人浏览过

|

来源于php中文网

原创

解决 github 自托管 runner 中 python 版本设置问题

本文旨在解决 GitHub 自托管 Runner 在配置 Python 环境时遇到的 "Version not found in local cache" 错误。通过分析问题原因,提供详细的解决方案,帮助开发者在非 Ubuntu/Windows 系统上成功配置 Python 环境,确保 CI/CD 流程顺利运行。本文重点在于理解 actions/setup-python 的限制,并提供替代方案。

问题分析

当在 GitHub 自托管 Runner 上使用 actions/setup-python action 时,可能会遇到如下错误:

Run actions/setup-python@v3
Version 3.9 was not found in the local cache
Error: Version 3.9 with arch x64 not found
The list of all available versions can be found here: `https://raw.githubusercontent.com/actions/python-versions/main/versions-manifest.json`

该错误通常发生在自托管 Runner 的操作系统不是 GitHub Actions 官方支持的 Ubuntu 或 Windows 版本时。actions/setup-python action 依赖于预先构建好的 Python 发行版,这些发行版仅针对特定的操作系统环境提供。

解决方案

如果你的自托管 Runner 使用的是非 Ubuntu/Windows 的 Linux 发行版(例如 AlmaLinux、Fedora 等),直接使用 actions/setup-python action 可能会失败。以下是几种替代方案:

立即学习Python免费学习笔记(深入)”;

1. 使用 Docker 容器

最推荐的解决方案是将你的构建过程封装到 Docker 容器中。Docker 容器提供了一个隔离且一致的环境,可以确保 Python 环境的正确配置,而无需依赖于主机操作系统的 Python 发行版。

步骤:

  1. 创建 Dockerfile: 在你的项目根目录下创建一个 Dockerfile,指定所需的 Python 版本和依赖。

    FROM python:3.9
    
    WORKDIR /app
    
    COPY requirements.txt .
    RUN pip install --no-cache-dir -r requirements.txt
    
    COPY . .
    
    CMD ["python", "your_script.py"]
    • FROM python:3.9:使用官方 Python 3.9 镜像作为基础镜像。
    • WORKDIR /app:设置工作目录为 /app。
    • COPY requirements.txt .:复制 requirements.txt 文件到容器中。
    • RUN pip install --no-cache-dir -r requirements.txt:安装 requirements.txt 中列出的依赖。--no-cache-dir 选项可以减小镜像大小。
    • COPY . .:复制项目所有文件到容器中。
    • CMD ["python", "your_script.py"]:定义容器启动时执行的命令。
  2. 修改 GitHub Actions workflow 文件: 修改 .github/workflows/your_workflow.yml 文件,使用 Docker 容器执行构建任务。

    name: Python application
    
    on:
      push:
        branches: [ "main" ]
      pull_request:
        branches: [ "main" ]
    
    permissions:
      contents: read
    
    jobs:
      build:
        runs-on: self-hosted
    
        steps:
        - uses: actions/checkout@v3
    
        - name: Build and run Docker container
          run: |
            docker build -t my-app .
            docker run my-app
    • docker build -t my-app .:构建 Docker 镜像,并命名为 my-app。
    • docker run my-app:运行 Docker 容器。
  3. 添加 .dockerignore 文件 (可选): 为了减小镜像大小并加速构建过程,可以创建一个 .dockerignore 文件,排除不必要的文件和目录。

    Kuwebs企业网站管理系统3.1.5 UTF8
    Kuwebs企业网站管理系统3.1.5 UTF8

    酷纬企业网站管理系统Kuwebs是酷纬信息开发的为企业网站提供解决方案而开发的营销型网站系统。在线留言模块、常见问题模块、友情链接模块。前台采用DIV+CSS,遵循SEO标准。 1.支持中文、英文两种版本,后台可以在不同的环境下编辑中英文。 3.程序和界面分离,提供通用的PHP标准语法字段供前台调用,可以为不同的页面设置不同的风格。 5.支持google地图生成、自定义标题、自定义关键词、自定义描

    下载
    .git
    __pycache__
    *.pyc

2. 手动安装 Python

如果不想使用 Docker,也可以在自托管 Runner 上手动安装所需的 Python 版本,并在 workflow 文件中直接使用。

步骤:

  1. 安装 Python: 在自托管 Runner 上安装所需的 Python 版本。具体安装方法取决于你使用的 Linux 发行版。例如,在 AlmaLinux 上可以使用 dnf 命令:

    sudo dnf install python39
  2. 修改 GitHub Actions workflow 文件: 修改 .github/workflows/your_workflow.yml 文件,直接使用已安装的 Python 版本。

    name: Python application
    
    on:
      push:
        branches: [ "main" ]
      pull_request:
        branches: [ "main" ]
    
    permissions:
      contents: read
    
    jobs:
      build:
        runs-on: self-hosted
    
        steps:
        - uses: actions/checkout@v3
    
        - name: Set up Python 3.9
          run: |
            python3.9 -m pip install --upgrade pip
            pip install -r requirements.txt
    
        - name: Lint with flake8
          run: |
            flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics
            flake8 . --count --exit-zero --max-complexity=10 --max-line-length=127 --statistics
    
        - name: Test with pytest
          run: |
            pytest *.py
    • 移除 actions/setup-python@v3 action。
    • 使用 python3.9 命令显式调用已安装的 Python 3.9 版本。

3. 使用 Conda (如果适用)

如果你的项目依赖于 Conda 环境,可以在自托管 Runner 上安装 Conda,并在 workflow 文件中使用 Conda 管理 Python 环境。

步骤:

  1. 安装 Conda: 在自托管 Runner 上安装 Miniconda 或 Anaconda。

  2. 修改 GitHub Actions workflow 文件: 修改 .github/workflows/your_workflow.yml 文件,使用 Conda 创建和激活环境。

    name: Python application
    
    on:
      push:
        branches: [ "main" ]
      pull_request:
        branches: [ "main" ]
    
    permissions:
      contents: read
    
    jobs:
      build:
        runs-on: self-hosted
    
        steps:
        - uses: actions/checkout@v3
    
        - name: Set up Conda
          run: |
            # Add conda to PATH
            export PATH="$HOME/miniconda3/bin:$PATH"
            conda env create -f environment.yml
            conda activate flow_corrections
    
        - name: Lint with flake8
          run: |
            flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics
            flake8 . --count --exit-zero --max-complexity=10 --max-line-length=127 --statistics
    
        - name: Test with pytest
          run: |
            pytest *.py
    • 确保 Conda 的可执行文件路径已添加到 PATH 环境变量中。
    • 使用 conda env create -f environment.yml 命令创建 Conda 环境。
    • 使用 conda activate flow_corrections 命令激活 Conda 环境。

注意事项

  • 版本匹配: 确保在 Dockerfile 或手动安装时选择与项目兼容的 Python 版本。
  • 依赖管理: 使用 requirements.txt 或 environment.yml 文件管理项目依赖,确保所有依赖项都已正确安装。
  • 缓存: 可以使用 GitHub Actions 的缓存机制缓存 Docker 镜像或 Conda 环境,以加速构建过程。
  • 安全: 在自托管 Runner 上安装软件时,请注意安全性,避免安装恶意软件。
  • 清理: 定期清理自托管 Runner 上的 Docker 镜像和 Conda 环境,以释放磁盘空间。

总结

当在 GitHub 自托管 Runner 上遇到 actions/setup-python action 无法找到指定 Python 版本的问题时,通常是因为 Runner 的操作系统不受支持。通过使用 Docker 容器、手动安装 Python 或使用 Conda 等替代方案,可以成功配置 Python 环境,确保 CI/CD 流程顺利运行。选择哪种方案取决于项目的具体需求和 Runner 的配置。 使用 Docker 容器是推荐的做法,因为它提供了隔离性和一致性。

相关专题

更多
python开发工具
python开发工具

php中文网为大家提供各种python开发工具,好的开发工具,可帮助开发者攻克编程学习中的基础障碍,理解每一行源代码在程序执行时在计算机中的过程。php中文网还为大家带来python相关课程以及相关文章等内容,供大家免费下载使用。

759

2023.06.15

python打包成可执行文件
python打包成可执行文件

本专题为大家带来python打包成可执行文件相关的文章,大家可以免费的下载体验。

639

2023.07.20

python能做什么
python能做什么

python能做的有:可用于开发基于控制台的应用程序、多媒体部分开发、用于开发基于Web的应用程序、使用python处理数据、系统编程等等。本专题为大家提供python相关的各种文章、以及下载和课程。

762

2023.07.25

format在python中的用法
format在python中的用法

Python中的format是一种字符串格式化方法,用于将变量或值插入到字符串中的占位符位置。通过format方法,我们可以动态地构建字符串,使其包含不同值。php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

618

2023.07.31

python教程
python教程

Python已成为一门网红语言,即使是在非编程开发者当中,也掀起了一股学习的热潮。本专题为大家带来python教程的相关文章,大家可以免费体验学习。

1265

2023.08.03

python环境变量的配置
python环境变量的配置

Python是一种流行的编程语言,被广泛用于软件开发、数据分析和科学计算等领域。在安装Python之后,我们需要配置环境变量,以便在任何位置都能够访问Python的可执行文件。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

549

2023.08.04

python eval
python eval

eval函数是Python中一个非常强大的函数,它可以将字符串作为Python代码进行执行,实现动态编程的效果。然而,由于其潜在的安全风险和性能问题,需要谨慎使用。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

579

2023.08.04

scratch和python区别
scratch和python区别

scratch和python的区别:1、scratch是一种专为初学者设计的图形化编程语言,python是一种文本编程语言;2、scratch使用的是基于积木的编程语法,python采用更加传统的文本编程语法等等。本专题为大家提供scratch和python相关的文章、下载、课程内容,供大家免费下载体验。

709

2023.08.11

高德地图升级方法汇总
高德地图升级方法汇总

本专题整合了高德地图升级相关教程,阅读专题下面的文章了解更多详细内容。

72

2026.01.16

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PostgreSQL 教程
PostgreSQL 教程

共48课时 | 7.4万人学习

Git 教程
Git 教程

共21课时 | 2.8万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号