Staging
v0.5.1
https://github.com/python/cpython
Raw File
Tip revision: 60d67c7afecd593616a14cde324382d7554da8f3 authored by cvs2svn on 13 April 1999, 15:52:45 UTC
This commit was manufactured by cvs2svn to create tag 'r152'.
Tip revision: 60d67c7
FixTk.py
"""Utility which tries to locate the Tcl/Tk 8.0 DLLs on Windows.

This is a no-op on other platforms.
"""

# Error messages we may spit out

NO_TCL_MESSAGE = """\
WHOOPS!  I can't find a Tcl/Tk 8.0 installation anywhere.
Please make sure that Tcl.Tk 8.0 is installed and that the PATH
environment variable is set to include the Tcl/bin directory
(or wherever TK80.DLL and TCL80.DLL are installed).
If you don't know how to fix this, consider searching the Python FAQ
for the error you get; post to the comp.lang.python if all else fails.
Read the source file FixTk.py for details.
"""

NO_TKINTER_MESSAGE = """\
WHOOPS!  Even though I think I have found a Tcl/Tk 8.0 installation,
I can't seem to import the _tkinter extension module.
I get the following exception:
    ImportError: %s
If you don't know how to fix this, consider searching the Python FAQ
for the error you get; post to the comp.lang.python if all else fails.
Read the source file FixTk.py for details.
"""

import sys
if sys.platform == "win32":
    try:
        import _tkinter
    except ImportError:
        import os
        try:
            path = os.environ['PATH']
        except KeyError:
            path = ""
        python_exe = sys.executable
        python_dir = os.path.dirname(python_exe)
        program_files = os.path.dirname(python_dir)
        def tclcheck(dir):
            for dll in "tcl80.dll", "tk80.dll", "tclpip80.dll":
                if not os.path.isfile(os.path.join(dir, dll)):
                    return 0
            return 1
        for tcldir in [program_files, "\\Program files", "\\",
                       "C:\\Program Files", "D:\\Program Files"]:
            tcldir = os.path.join(tcldir, "Tcl", "bin")
            if tclcheck(tcldir):
                break
        else:
            tcldir = None
        if not tcldir:
            sys.stderr.write(NO_TCL_MESSAGE)
        else:
            if path and path[-1] != os.pathsep:
                path = path + os.pathsep
            path = path + tcldir
            os.environ["PATH"] = path
            os.putenv("PATH", path)
            try:
                import _tkinter
            except ImportError, message:
                sys.stderr.write(NO_TKINTER_MESSAGE % str(message))
back to top