Kaydet (Commit) f8d579c5 authored tarafından Guido van Rossum's avatar Guido van Rossum

This hopefully fixes the problem of having to set PATH

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.
üst 88303194
"""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))
......@@ -2,7 +2,10 @@
__version__ = "$Revision$"
import _tkinter # If this fails your Python is not configured for Tk
import sys
if sys.platform == "win32":
import FixTk # Attempt to configure Tcl/Tk without requiring PATH
import _tkinter # If this fails your Python may not be configured for Tk
tkinter = _tkinter # b/w compat for export
TclError = _tkinter.TclError
from types import *
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment