这几天发现微信推送程序出现了问题,查询了一下在贴吧里看到一位大佬(找不到带有arch x64的3.9.1版本!!!【github吧】_百度贴吧)的解决方案,记录一下。
问题是已经运行了一百多天的程序,突然这几天开始不好使了。
根据描述提示是3.9.1版本的Python没找到。
根据帖子知道actions/setup-python (当前最新是 v4)支持在两个地方寻找可用的 Python 版本,一个是在用户指定的 Runner Images 缓存中寻找(优先),另一个是在 actions/python-versions 中寻找(次要)。
由于教程的原因我跟楼主使用的 Runner 统一是 ubuntu-latest ,这对应了目前最新的 Ubuntu 22.04 LTS 。首先去 GitHub 官方的 Runner Images 信息中查询了关于 Python 的已缓存版本,其中可以直接从缓存释放安装的版本是 v3.9.15 ,需要的 v3.9.1 确实没有被提前缓存,因此会提示那个 "not found in the local cache" 。
actions/setup-python 会在本地缓存找不到之后,会去 actions/python-versions 的 JSON 配置文件里寻找用户指定版本并下载安装。于是找到了这个 JSON 文件,其中关于 Python v3.9.1 的所有预编译二进制文件(如下图),其中 Ubuntu 上有3个二进制压缩包,但里面并没有给 Ubuntu 22.04 LTS 使用的压缩包。
综上,Python v3.9.1 在 GitHub 这里是不支持 Ubuntu 22.04 LTS 的,所以我们使用的 Workflows 配置文件会出问题。尽管 GitHub 的帮助文档中把 "ubuntu-latest" 标签打在了 Ubuntu 20.04 LTS 之上,但后面也有一个提示说他们在逐步把这个标签转移到 Ubuntu 22.04 LTS 去,"ubuntu-latest" 将会随机分发 20.04 与 22.04 ,可能是这个原因导致的。
至于解决方案也有两个:修改项目的 Workflow Config (那个 weixin.yml 文件)
一是将 Python 版本提升到 Ubuntu 22.04 LTS 同样支持的 v3.9.12 。
二是保持 Python v3.9.1 ,将 Runner Image 修改为 ubuntu-20.04 。
经测试改为3.9.12后成功运行。