macOS环境下GitHub Action如何获取8.6及以上版本的Tkinter
解决方案
macOS GitHub Actions runner 内置的 Python 及 actions/setup-python 拉取的 Python 默认链接系统自带的低版本 Tcl/Tk,你之前的操作没有生效是因为没有指定 Python 优先调用 brew 安装的高版本 Tcl/Tk 组件,可按以下两种方案修改工作流配置:
方案1:使用brew安装的Python(优先选择,操作更稳定)
完全替换actions/setup-python步骤,直接通过brew安装对应版本Python,brew源的Python默认已绑定高版本Tcl/Tk:
jobs: demo: runs-on: macOS-latest steps: - name: 安装Python与依赖 run: | brew update brew install python@3.9 tcl-tk # 链接brew Python到全局优先路径 echo 'export PATH="/usr/local/opt/python@3.9/bin:$PATH"' >> ~/.zshrc source ~/.zshrc - name: 验证Tkinter版本 run: | python3.9 -c 'import tkinter; tcl = tkinter.Tcl(); print(tcl.call("info", "patchlevel"))'
运行后输出应为8.6.x版本,满足ttkthemes依赖要求。
方案2:保留actions/setup-python,手动指定Tcl/Tk路径
如果必须用actions/setup-python管理Python版本,可在运行Python相关命令前配置环境变量,强制Python调用brew安装的高版本Tcl/Tk:
jobs: demo: runs-on: macOS-latest steps: - name: 安装高版本Tcl/Tk run: brew install tcl-tk - name: Setup Python uses: actions/setup-python@v2.2.2 with: python-version: 3.9 - name: 配置Tcl/Tk环境变量并验证版本 run: | export PATH="/usr/local/opt/tcl-tk/bin:$PATH" export LDFLAGS="-L/usr/local/opt/tcl-tk/lib" export CPPFLAGS="-I/usr/local/opt/tcl-tk/include" export PKG_CONFIG_PATH="/usr/local/opt/tcl-tk/lib/pkgconfig" python3 -c 'import tkinter; tcl = tkinter.Tcl(); print(tcl.call("info", "patchlevel"))'
如果验证通过,后续安装ttkthemes的步骤也需要在配置了上述环境变量的同一步骤中执行,或者将环境变量写入全局配置永久生效。
内容的提问来源于stack exchange,提问作者NiBa
相关产品推荐
相关产品推荐

