"""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))