25

I am using Ubuntu 13.10 and Python 3.3.4 using pyenv. I have no problem using other modules. When I enter python console and write

import tkinter

It outputs

Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/home/serdar/.pyenv/versions/3.3.4/lib/python3.3/tkinter/__init__.py", line 40, in <module>
import _tkinter # If this fails your Python may not be configured for Tk
ImportError: No module named '_tkinter'

I already installed python3-tk and tk-devel.

serdar
  • 974
  • 2
  • 16
  • 24
  • Does `/usr/bin/python3 -c'import tkinter'` succeed? – jfs Mar 21 '14 at 09:43
  • Yes it worked but **pyenv** installs multiple version. You can change active python version with single command. It installs under ~/.pyenv/versions. `~/.pyenv/versions/3.3.4/bin/python3 -c'import tkinter'` didn't worked. – serdar Mar 21 '14 at 21:03
  • if it works with `/usr/bin/python3` then try to recreate the environment – jfs Mar 22 '14 at 02:27
  • @J.F.Sebastian JFI: [pyenv](https://github.com/yyuu/pyenv) works different from regular virtualenvs. – blueyed Jul 08 '15 at 16:51
  • if you are using `pyenv` for Python environments management and want IDLE work there is step by step guide https://stackoverflow.com/questions/61870688/idle-and-tkinter-issue-with-tk-using-pyenv – nickolay May 18 '20 at 22:06

3 Answers3

37

You need to have the Tk development files/headers available during pyenv install.

On Ubuntu (15.04) the following should provide them: sudo apt-get install tk-dev.

After this, pyenv install 3.4.3 (or pyenv install 2.7.10 etc) should pick it up and have support for Tk.

(Reference issue in pyenv)

blueyed
  • 27,102
  • 4
  • 75
  • 71
18

This is a guide for Mac users,

  1. Uninstall your python version. For example: pyenv uninstall 3.7.2
  2. Install TK: brew install tcl-tk
  3. Follow the post install steps and config tk:
export LDFLAGS="-L/usr/local/opt/tcl-tk/lib"
export CPPFLAGS="-I/usr/local/opt/tcl-tk/include"
export PATH=$PATH:/usr/local/opt/tcl-tk/bin
  1. Reload your terminal session and make sure all settings above are correctly set
  2. Install python: pyenv install 3.7.2

The TK should work now

dpaluy
  • 3,537
  • 1
  • 28
  • 42
4

For Mac users,

  1. Uninstall pyenv completely: brew uninstall pyenv && rm -rf ~/.pyenv.
  2. install zlib, tcl-tk and pyenv
brew update
brew install zlib
brew install tcl-tk #otherwise we may have problems with tf package
brew install pyenv
  1. Make compilers find zlib. Add this to your ~/.bashrc or ~/.zshrc (if you youse oh-my-zsh)
# For compilers to find zlib you may need to set:
export LDFLAGS="${LDFLAGS} -L/usr/local/opt/zlib/lib"
export CPPFLAGS="${CPPFLAGS} -I/usr/local/opt/zlib/include"

# For pkg-config to find zlib you may need to set:
export PKG_CONFIG_PATH="${PKG_CONFIG_PATH} /usr/local/opt/zlib/lib/pkgconfig"

Then you are set up!. For more details check this github gist.

charlesreid1
  • 4,360
  • 4
  • 30
  • 52
Salami
  • 317
  • 1
  • 2
  • 9