This issue tracker has been migrated to GitHub, and is currently read-only.
For more information, see the GitHub FAQs in the Python's Developer Guide.

Author dplusplus
Recipients dplusplus, jpc2350, ned.deily
Date 2018-06-18.05:13:45
SpamBayes Score -1.0
Marked as misclassified Yes
Message-id <1529298826.53.0.56676864532.issue31817@psf.upfronthosting.co.za>
In-reply-to
Content
Revisited this recently and found a fix. This problem seems to appear only if Tcl and/or Tk is installed in a non-standard folder.

In the ./configure call, include `-ltcl8.6 -ltk8.6` (for Tcl/Tk 8.6.x) in the --with-tcltk-libs specification, so the command looks like `./configure --with-tcltk-libs='-L/path/to/tcl/lib/location -L/path/to/tk/lib/location -ltcl8.6 -ltk8.6'`. Since the Tcl and Tk shared libraries are in non-standard locations, set LD_LIBRARY or append '-Wl,-rpath,/path/to/tcl/lib/location -Wl,-rpath,/path/to/tk/lib/location' to --with-tcltk-libs. Run make and the tkinter import failure is no longer there.


`import tkinter` runs fine, but an error appears when running the simple hello world script at https://docs.python.org/3.6/library/tkinter.html:

Traceback (most recent call last):
  File "/opt/tk_sample.py", line 22, in <module>
    root = tk.Tk()
  File "/opt/Python-3.6.5/Lib/tkinter/__init__.py", line 2020, in __init__
    self.tk = _tkinter.create(screenName, baseName, className, interactive, wantobjects, useTk, sync, use)
_tkinter.TclError: Can't find a usable tk.tcl in the following directories:
    /opt/tk/lib /opt/tcl/lib/tcl8.6/tk8.6 /opt/tcl/lib/tk8.6 /opt/Python-3.6.5/lib/tk8.6 /opt/Python-3.6.5/lib/tk8.6 /opt/lib/tk8.6 /opt/Python-3.6.5/library

`tk.tcl` is in /opt/tk/lib/tk8.6; looking at the directories listed in the error message _tkinter is expecting Tcl and Tk to be installed in the same folder (To be fair, Tk warns about this in its configure script).
This is fixed by setting the environment variable TK_LIBRARY to the folder where tk.tcl is. I do not consider this a complete solution though, since TK_LIBRARY needs to be set to run anything that uses tkinter.
History
Date User Action Args
2018-06-18 05:13:46dplusplussetrecipients: + dplusplus, ned.deily, jpc2350
2018-06-18 05:13:46dplusplussetmessageid: <1529298826.53.0.56676864532.issue31817@psf.upfronthosting.co.za>
2018-06-18 05:13:46dpluspluslinkissue31817 messages
2018-06-18 05:13:45dpluspluscreate