mirror of
				https://github.com/python/cpython.git
				synced 2025-11-04 11:49:12 +00:00 
			
		
		
		
	in autoexec.bat in order to find the Tcl DLLs -- Tkinter calls FixTk which will hunt around in a few common places and then set PATH and try again, or else issue a big clarifying error message.
		
			
				
	
	
		
			64 lines
		
	
	
	
		
			2.2 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			64 lines
		
	
	
	
		
			2.2 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
"""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))
 |