After much digging, I've found a solution (with some caveats) -
you'll need both homebrew
and pyenv
installed for this to work. The idea is to replace your old deprecated tkinter installation with an up-to-date one that actually works* (and leaves your Mac's system Python alone!)
Note that this will wipe out any packages you’ve installed with pip
- back those up first! There is a plugin available for pyenv called pyenv pip-migrate that will make this easier.
Run the following commands
brew uninstall tcl-tk
uninstall the old tk if you have it
pyenv uninstall 3.10.5
...or whatever your current global Python version is
brew install tcl-tk
grab a fresh install of tk
pyenv install 3.10.5
grab a fresh install of Python 3.10.5 (or whichever)
pyenv global 3.10.5
set your global Python version (matching the version you just installed above)
You need to install tk via homebrew
before installing Python with pyenv
because pyenv
will automatically try to use whatever tk package it can find when it installs Python.
This will also work if you are using pyenv
to upgrade from one version of Python to another.
Final Thoughts
If you don't already have homebrew
installed, here are good instructions
If you don't have pyenv
, just run brew install pyenv
You’ll probably need to select your preferred Python interpreter in VSCode again
*This worked for me - YMMV