15

I got problems with importing tkinter after installing Python version 3.4.2 with pyenv. My system Python is version 2.7.6. I am using Ubuntu 14.04. For the following sample script t.py:

import _tkinter

print ("Hello")

I get:

$ pyenv global system
$ python --version
Python 2.7.6
$ python t.py
Hello
$ pyenv global 3.4.2
$ python --version
Python 3.4.2
$ python t.py
Traceback (most recent call last):
  File "t.py", line 3, in <module>
    import _tkinter
ImportError: No module named '_tkinter'
    Traceback (most recent call last):
      File "t.py", line 3, in <module>
        import _tkinter
    ImportError: No module named '_tkinter'

Note that pyenv installed Python version 3.4.2 in ~/.pyenv/versions/3.4.2/.

Håkon Hægland
  • 39,012
  • 21
  • 81
  • 174

3 Answers3

34

This problem seems to be solved now using the approach described in this post:

  • First uninstall Python 3.4.2 : pyenv uninstall 3.4.2, then
  • Run sudo apt-get install tk-dev
  • And reinstall Python 3.4.2 : pyenv install 3.4.2
blueyed
  • 27,102
  • 4
  • 75
  • 71
Håkon Hægland
  • 39,012
  • 21
  • 81
  • 174
1

For MacOS you can try installing tcl-tk via homebrew and then activating the env. vars. mentioned in its caveats section, as detailed in this answer.

Carl G
  • 17,394
  • 14
  • 91
  • 115
0

Change your code to:

import tkinter

Documentation link:

Most of the time, tkinter is all you really need, but a number of additional modules are available as well. The Tk interface is located in a binary module named _tkinter. This module contains the low-level interface to Tk, and should never be used directly by application programmers. It is usually a shared library (or DLL), but might in some cases be statically linked with the Python interpreter.

avi
  • 9,292
  • 11
  • 47
  • 84