Closes #25456: Copy Tcl/Tk DLLs to build directory on Windows

This removes the need to add externals/tcltk[64]/bin to PATH to be able
to import tkinter.  Also documents the necessity for the DLLs to be
on PATH or in python.exe's directory.
This commit is contained in:
Zachary Ware 2015-10-24 01:34:22 -05:00
parent 0e316f688e
commit 677744b386
2 changed files with 15 additions and 3 deletions

View File

@ -82,6 +82,9 @@ if '%build_tkinter%'=='true' (
nmake -f makefile.vc MACHINE=%machine% OPTS=%options% INSTALLDIR="%tcltkdir%" install-binaries install-libraries
popd
)
if not exist "%builddir%tcl86t%tcl_dbg_ext%.dll" (
xcopy "%tcltkdir%\bin\tcl86t%tcl_dbg_ext%.dll" "%builddir%"
)
if not exist "%tcltkdir%\bin\tk86t%tcl_dbg_ext%.dll" (
pushd "%tkdir%\win"
@ -90,6 +93,9 @@ if '%build_tkinter%'=='true' (
nmake -f makefile.vc MACHINE=%machine% OPTS=%options% INSTALLDIR="%tcltkdir%" TCLDIR="%tcldir%" install-binaries install-libraries
popd
)
if not exist "%builddir%tk86t%tcl_dbg_ext%.dll" (
xcopy "%tcltkdir%\bin\tk86t%tcl_dbg_ext%.dll" "%builddir%"
)
if not exist "%tcltkdir%\lib\tix8.4.3\tix84%tcl_dbg_ext%.dll" (
pushd "%tixdir%\win"

View File

@ -225,9 +225,15 @@ _tkinter
Unlike the other external libraries listed above, Tk must be built
separately before the _tkinter module can be built. This means that
a pre-built Tcl/Tk installation is expected in ..\externals\tcltk
(tcltk64 for 64-bit) relative to this directory. See "Getting
External Sources" below for the easiest method to ensure Tcl/Tk is
built.
(tcltk64 for 64-bit) relative to this directory; the easiest way to
do so is to build Python using `build.bat -e`, which will build
Tcl, Tk, and Tix and install them as expected. Note that to
import and use tkinter, the Tcl and Tk DLLs must be somewhere that
python.exe can find them, which means that either
..\externals\tcltk[64]\bin must be added to PATH, or the DLLs must
be copied from that folder to be alongside python.exe. `build.bat`
takes care of it for you by copying the DLLs into the build
directory.
Getting External Sources