I recently spent couple hours making tkinter
and IDLE work on my pyenv
Python installation (macOS).
Why you are here?
Here is step by step guide to make IDLE and tkinter
work:
tcl-tk
with Homebrew. In shell run brew install tcl-tk
echo 'export PATH="/usr/local/opt/tcl-tk/bin:$PATH"' >> ~/.zshrc
Terminal
app or run source ~/.zshrc
tck-tk
is in $PATH
. Run echo $PATH | grep --color=auto tcl-tk
. As the result you should see your $PATH contents with tcl-tk
highlightedexport 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"
pyenv
then uninstall it with pyenv uninstall
. E.g. pyenv uninstall 3.8.2
python-build
. In shell run export PYTHON_CONFIGURE_OPTS="--with-tcltk-includes='-I/usr/local/opt/tcl-tk/include' --with-tcltk-libs='-L/usr/local/opt/tcl-tk/lib -ltcl8.6 -ltk8.6'"
Note: in future use tck-tk
version that actually installed with Homebrew. At the moment of posting 8.6
was the actualpyenv
with pyenv install
. E.g. pyenv install 3.8.2
Test
pyenv global
idle
. You should see IDLE window without any warnings and "text printed in red".tkinter
. In shell run python -m tkinter -c "tkinter._test()"
. You should see test window like on the image:That's it!
My environment:
check this is something went wrong executing steps above:
zsh
(included in macOS Catalina) = "shell" abovepyenv
(installed with Homebrew and PATH updated according to pyenv
official readme from GitHub)3.8.x
- 3.9.x
(installed with pyenv install
command)