Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Python 3.7.13 macOS: tk.h version (8.6) doesn't match libtk.a version (8.5) #402

Closed
2 of 5 tasks
carlosperate opened this issue May 6, 2022 · 5 comments · Fixed by actions/python-versions#171
Closed
2 of 5 tasks
Assignees
Labels
bug Something isn't working

Comments

@carlosperate
Copy link

carlosperate commented May 6, 2022

Description:
There seems to be a mistmatch between the tkinter versions with Python 3.7 on macOS.

Action version:
v3
Which at the time of writting is v3.1.2

Platform:

  • Ubuntu
  • macOS
  • Windows

Runner type:

  • Hosted
  • Self-hosted

Tools version:

  • Python 3.7
    • Specically 3.7.13
  • Current runner version: '2.291.1'
    • macOS (latest) 11.6.5 20G527

Repro steps:

This simple script opens a tkinter window and closes it after 5 seconds:

import tkinter as tk

root = tk.Tk()
label = tk.Label(root, text="Hello World!")
label.pack(padx=20, pady=20)
root.after(5000, root.destroy)    # Close the Window after 5 seconds
root.mainloop()

With this workflow:

name: Test Python Tk

on: [push, pull_request]

jobs:
  tests-poetry:
    strategy:
      matrix:
        os: [ubuntu-latest, macos-latest, windows-latest]
        python-version: ["3.6", "3.7", "3.8", "3.9", "3.10"]
      fail-fast: false
    name: Py ${{ matrix.python-version }} - ${{ matrix.os }}
    runs-on: ${{ matrix.os }}
    steps:
      - uses: actions/checkout@v3
      - name: Set up Python ${{ matrix.python-version }}
        uses: actions/setup-python@v3
        with:
          python-version: ${{ matrix.python-version }}
      - name: Prepare Ubuntu xvfb
        if: runner.os == 'Linux'
        run: |
          sudo apt-get update
          sudo apt-get install -y libxkbcommon-x11-0 xvfb
      - name: Run tk script (closes itself after 5 seconds) - Ubuntu
        if: runner.os == 'Linux'
        run: xvfb-run python tk_min.py
      - name: Run tk script (closes itself after 5 seconds)
        if: runner.os != 'Linux'
        run: python tk_min.py

Works in all Python versions and operating systems except 3.7 on macOS:

image

Expected behavior:
The Python script to run without throwing an exception

Actual behavior:
An exception thrown by Python:

 Traceback (most recent call last):
  File "tk_min.py", line 9, in <module>
    root = tk.Tk()
  File "/Users/runner/hostedtoolcache/Python/3.7.13/x64/lib/python3.7/tkinter/__init__.py", line 2025, in __init__
    self._loadtk()
  File "/Users/runner/hostedtoolcache/Python/3.7.13/x64/lib/python3.7/tkinter/__init__.py", line 2040, in _loadtk
    % (_tkinter.TK_VERSION, tk_version))
RuntimeError: tk.h version (8.6) doesn't match libtk.a version (8.5)
@carlosperate carlosperate added bug Something isn't working needs triage labels May 6, 2022
@carlosperate carlosperate changed the title Python 3.7 macOS: tk.h version (8.6) doesn't match libtk.a version (8.5) Python 3.7.13 macOS: tk.h version (8.6) doesn't match libtk.a version (8.5) May 6, 2022
@carlosperate
Copy link
Author

carlosperate commented May 6, 2022

Okay, so it looks like the issue is specifically contained with 3.7.13, versions 3.7.12 and .11 work on macOS (the Windows issues on this run are due to these specific Python 3.7 versions not being available on Windows):
https://github.com/carlosperate/pyinstaller-test/actions/runs/2282135890

carlosperate added a commit to carlosperate/ubittool that referenced this issue May 6, 2022
The issue is the Python build used in the GitHub Action
actions/setup-python.

actions/setup-python#402
@dsame
Copy link
Contributor

dsame commented May 9, 2022

Hello @carlosperate
Thanks for your note - i am able to reproduce and confirm the problem exists

@marko-zivic-93 please remove needs triage tag, this issue is confirmed bug

@QuLogic
Copy link

QuLogic commented May 14, 2022

Based on new latest test runs, this has now spread to Python 3.8 on GitHub Actions as well.

@kousu
Copy link

kousu commented May 17, 2022

I just found this too, I have a reproducer here with an example run. The pattern of failures looks like

Except for the last one, all of the failures are

tk.h version (8.6) doesn't match libtk.a version (8.5)

(the last one is about $DISPLAY, which is a reasonable error, but I don't know why {macos-10.15}x{python3.10} hits that)

We started seeing this on our team two weeks ago, when it only affected the 3.7 environment, then this week it became 3.7 and 3.8, which makes me suspect strongly something got rebuilt and it's a bug in the runner environment.

Oddly, this exactly same error was fixed 7 years ago(!) in brew: Homebrew/legacy-homebrew#41728. Did GitHub accidentally reproduce this bug? Are they using brew packages from way back then?

@dsame
Copy link
Contributor

dsame commented Jun 15, 2022

Current workaround is to fix the patch version of the python to 3.7.12

      - name: Set up Python 3.7
        uses: actions/setup-python@v3
        with:
          python-version: 3.7.12

Apparently we have some interference between system Tk /System/Library/Frameworks/Tk.framework/Versions/8.5 and brew Tk /usr/local/Cellar/tcl-tk/8.6.12_1 but the exact reason of the break change needs more investigation

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

Successfully merging a pull request may close this issue.

7 participants