summaryrefslogtreecommitdiffstats
path: root/PCbuild
diff options
context:
space:
mode:
authorZachary Ware <zachary.ware@gmail.com>2015-10-24 06:34:22 (GMT)
committerZachary Ware <zachary.ware@gmail.com>2015-10-24 06:34:22 (GMT)
commit677744b3861f446ede2db16fba2e55c3764aa85f (patch)
treea4c50652b4ce88cfc51e500fd88777a49a42441f /PCbuild
parent0e316f688ef2499fe31ea7cf8e4884cf22863b0d (diff)
downloadcpython-677744b3861f446ede2db16fba2e55c3764aa85f.zip
cpython-677744b3861f446ede2db16fba2e55c3764aa85f.tar.gz
cpython-677744b3861f446ede2db16fba2e55c3764aa85f.tar.bz2
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.
Diffstat (limited to 'PCbuild')
-rw-r--r--PCbuild/build.bat6
-rw-r--r--PCbuild/readme.txt12
2 files changed, 15 insertions, 3 deletions
diff --git a/PCbuild/build.bat b/PCbuild/build.bat
index f3bc1e3..0c482f5 100644
--- a/PCbuild/build.bat
+++ b/PCbuild/build.bat
@@ -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"
diff --git a/PCbuild/readme.txt b/PCbuild/readme.txt
index a3c7fbd..e0c6685 100644
--- a/PCbuild/readme.txt
+++ b/PCbuild/readme.txt
@@ -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