setup-python

setup-python

在 GitHub Actions 中轻松配置 Python PyPy 和 GraalPy 环境

setup-python 是一个 GitHub Action,用于在工作流中安装和配置 Python、PyPy 或 GraalPy 环境。该 Action 支持版本指定、依赖缓存和错误输出匹配,简化了 Python 项目的 CI/CD 流程。它提供灵活的版本语法和多架构兼容性,适用于不同的 Python 开发需求。

GitHub ActionsPythonPyPyGraalPy依赖缓存Github开源项目

setup-python

基本验证 验证 Python e2e 验证 PyPy e2e e2e-缓存

这个 Action 为 GitHub Actions 用户提供以下功能:

  • 安装 Python 或 PyPy 的特定版本,并(默认情况下)将其添加到 PATH
  • 可选择缓存 pip、pipenv 和 poetry 的依赖项
  • 为错误输出注册问题匹配器

基本用法

参见 action.yml

Python

steps: - uses: actions/checkout@v4 - uses: actions/setup-python@v5 with: python-version: '3.10' - run: python my_script.py

PyPy

steps: - uses: actions/checkout@v4 - uses: actions/setup-python@v5 with: python-version: 'pypy3.9' - run: python my_script.py

GraalPy

steps: - uses: actions/checkout@v4 - uses: actions/setup-python@v5 with: python-version: 'graalpy-22.3' - run: python my_script.py

python-version 输入是可选的。如果未提供,该 Action 将尝试从默认的 .python-version 文件解析版本。如果 .python-version 文件不存在,将使用 PATH 中的 Python 或 PyPy 版本。PATH 中的 Python 或 PyPy 默认版本在不同运行器之间可能有所不同,并且可能会意外更改,因此我们建议始终使用 python-versionpython-version-file 输入显式设置 Python 版本。

该 Action 首先会在本地工具缓存中查找 semver 匹配项。如果在工具缓存中找不到特定版本,该 Action 将尝试从 GitHub Releases 下载 Python 版本,或从官方 PyPy 发布页面 下载 PyPy 版本。

有关 GitHub 托管运行器上本地缓存的 Python 或 PyPy 版本的信息,请查看 GitHub Actions Runner Images

支持的版本语法

python-version 输入支持语义化版本规范和一些特殊版本表示法(例如 semver 范围x.y-dev 语法等),详细示例请参阅 高级用法 指南中的 使用 python-version 输入 部分。

支持的架构

使用 architecture 输入可以指定所需的 Python 或 PyPy 解释器架构:x86x64。如果未指定输入,架构默认为 x64

缓存包依赖

该 Action 内置了缓存和恢复依赖项的功能。它在底层使用 toolkit/cache 进行依赖项缓存,但需要的配置设置更少。支持的包管理器有 pippipenvpoetrycache 输入是可选的,默认情况下缓存是关闭的。

该 Action 默认在仓库中搜索依赖文件(pip 的 requirements.txtpyproject.toml,pipenv 的 Pipfile.lock,或 poetry 的 poetry.lock),并使用其哈希值作为缓存键的一部分。cache-dependency-path 输入用于使用多个依赖文件、它们位于不同子目录或想要使用不同文件进行哈希的情况。

  • 对于 pip,该 Action 将缓存全局缓存目录
  • 对于 pipenv,该 Action 将缓存虚拟环境目录
  • 对于 poetry,该 Action 将缓存虚拟环境目录 -- 每个找到的 poetry 项目一个

缓存 pip 依赖:

steps: - uses: actions/checkout@v4 - uses: actions/setup-python@v5 with: python-version: '3.9' cache: 'pip' # 缓存 pip 依赖 - run: pip install -r requirements.txt

注意: 如果长时间未更新 requirements.txt 文件,而有更新的依赖版本可用,恢复的缓存将不会被使用,这可能会导致总构建时间增加。

requirements 文件格式允许使用逻辑运算符(例如 chardet>=3.0.4)指定依赖版本或不指定任何版本。在这种情况下,pip install -r requirements.txt 命令将始终尝试安装最新可用的包版本。为确保使用缓存,请坚持使用特定的依赖版本,并在必要时手动更新。

有关在 pipenvpoetry 中使用 cachecache-dependency-path 的示例,请参阅 高级用法 指南中的 缓存包 部分。

高级用法

许可证

本项目中的脚本和文档在 MIT 许可证 下发布。

贡献

欢迎贡献!请参阅我们的贡献者指南

编辑推荐精选

博思AIPPT

博思AIPPT

AI一键生成PPT,就用博思AIPPT!

博思AIPPT,新一代的AI生成PPT平台,支持智能生成PPT、AI美化PPT、文本&链接生成PPT、导入Word/PDF/Markdown文档生成PPT等,内置海量精美PPT模板,涵盖商务、教育、科技等不同风格,同时针对每个页面提供多种版式,一键自适应切换,完美适配各种办公场景。

热门AI工具AI办公办公工具智能排版AI生成PPT博思AIPPT海量精品模板AI创作
潮际好麦

潮际好麦

AI赋能电商视觉革命,一站式智能商拍平台

潮际好麦深耕服装行业,是国内AI试衣效果最好的软件。使用先进AIGC能力为电商卖家批量提供优质的、低成本的商拍图。合作品牌有Shein、Lazada、安踏、百丽等65个国内外头部品牌,以及国内10万+淘宝、天猫、京东等主流平台的品牌商家,为卖家节省将近85%的出图成本,提升约3倍出图效率,让品牌能够快速上架。

iTerms

iTerms

企业专属的AI法律顾问

iTerms是法大大集团旗下法律子品牌,基于最先进的大语言模型(LLM)、专业的法律知识库和强大的智能体架构,帮助企业扫清合规障碍,筑牢风控防线,成为您企业专属的AI法律顾问。

SimilarWeb流量提升

SimilarWeb流量提升

稳定高效的流量提升解决方案,助力品牌曝光

稳定高效的流量提升解决方案,助力品牌曝光

Sora2视频免费生成

Sora2视频免费生成

最新版Sora2模型免费使用,一键生成无水印视频

最新版Sora2模型免费使用,一键生成无水印视频

Transly

Transly

实时语音翻译/同声传译工具

Transly是一个多场景的AI大语言模型驱动的同声传译、专业翻译助手,它拥有超精准的音频识别翻译能力,几乎零延迟的使用体验和支持多国语言可以让你带它走遍全球,无论你是留学生、商务人士、韩剧美剧爱好者,还是出国游玩、多国会议、跨国追星等等,都可以满足你所有需要同传的场景需求,线上线下通用,扫除语言障碍,让全世界的语言交流不再有国界。

讯飞绘文

讯飞绘文

选题、配图、成文,一站式创作,让内容运营更高效

讯飞绘文,一个AI集成平台,支持写作、选题、配图、排版和发布。高效生成适用于各类媒体的定制内容,加速品牌传播,提升内容营销效果。

AI助手热门AI工具AI创作AI辅助写作讯飞绘文内容运营个性化文章多平台分发
TRAE编程

TRAE编程

AI辅助编程,代码自动修复

Trae是一种自适应的集成开发环境(IDE),通过自动化和多元协作改变开发流程。利用Trae,团队能够更快速、精确地编写和部署代码,从而提高编程效率和项目交付速度。Trae具备上下文感知和代码自动完成功能,是提升开发效率的理想工具。

热门AI工具生产力协作转型TraeAI IDE
商汤小浣熊

商汤小浣熊

最强AI数据分析助手

小浣熊家族Raccoon,您的AI智能助手,致力于通过先进的人工智能技术,为用户提供高效、便捷的智能服务。无论是日常咨询还是专业问题解答,小浣熊都能以快速、准确的响应满足您的需求,让您的生活更加智能便捷。

imini AI

imini AI

像人一样思考的AI智能体

imini 是一款超级AI智能体,能根据人类指令,自主思考、自主完成、并且交付结果的AI智能体。

下拉加载更多