1 Building Python using VC++ 6.0 or 5.0
2 -------------------------------------
3 This directory is used to build Python for Win32 platforms, e.g. Windows
4 2000 and XP. It requires Microsoft Visual C++ 6.x or 5.x.
5 (For other Windows platforms and compilers, see ../readme.txt.)
7 All you need to do is open the workspace "pcbuild.dsw" in MSVC++, select
8 the Debug or Release setting (using Build -> Set Active Configuration...),
9 and build the projects.
11 The proper order to build subprojects:
13 1) pythoncore (this builds the main Python DLL and library files,
14 python27.{dll, lib} in Release mode)
16 2) python (this builds the main Python executable,
17 python.exe in Release mode)
19 3) the other subprojects, as desired or needed (note: you probably don't
20 want to build most of the other subprojects, unless you're building an
21 entire Python distribution from scratch, or specifically making changes
22 to the subsystems they implement; see SUBPROJECTS below)
24 When using the Debug setting, the output files have a _d added to
25 their name: python27_d.dll, python_d.exe, pyexpat_d.pyd, and so on.
29 These subprojects should build out of the box. Subprojects other than the
30 main ones (pythoncore, python, pythonw) generally build a DLL (renamed to
31 .pyd) from a specific module so that users don't have to load the code
32 supporting that module unless they import the module.
39 pythonw.exe, a variant of python.exe that doesn't pop up a DOS box
41 _msi.c. You need to install Windows Installer SDK to build this module.
42 http://www.microsoft.com/msdownload/platformsdk/sdkupdate/psdk-full.htm
46 tests of the Python C API, run via Lib/test/test_capi.py, and
47 implemented by module Modules/_testcapimodule.c
49 Python wrapper for accelerated XML parsing, which incorporates stable
50 code from the Expat project: http://sourceforge.net/projects/expat/
54 large tables of Unicode data
56 play sounds (typically .wav files) under Windows
58 The following subprojects will generally NOT build out of the box. They
59 wrap code Python doesn't control, and you'll need to download the base
60 packages first and unpack them into siblings of PCbuilds's parent
61 directory; for example, if your PCbuild is .......\dist\src\PCbuild\,
62 unpack into new subdirectories of dist\.
65 Python wrapper for the Tk windowing system. Requires building
66 Tcl/Tk first. Following are instructions for Tcl/Tk 8.5.2.
70 In the dist directory, run
71 svn export http://svn.python.org/projects/external/tcl-8.5.2.1 tcl8.5.2
72 svn export http://svn.python.org/projects/external/tk-8.5.2.0 tk8.5.2
73 svn export http://svn.python.org/projects/external/tix-8.4.3.1 tix8.4.3
77 To build debug version, add DEBUG=1 to all nmake call bellow.
79 Build Tcl first (done here w/ MSVC 6 on Win2K)
81 If your environment doesn't have struct _stat64, you need to apply
82 tcl852.patch in this directory to dist\tcl8.5.2\generic\tcl.h.
87 nmake -f makefile.vc INSTALLDIR=..\..\tcltk install
89 XXX Should we compile with OPTS=threads?
91 Optional: run tests, via
92 nmake -f makefile.vc test
94 all.tcl: Total 24242 Passed 23358 Skipped 877 Failed 7
95 Sourced 137 Test Files.
96 Files with failing tests: exec.test http.test io.test main.test string.test stri
102 nmake -f makefile.vc TCLDIR=..\..\tcl8.5.2
103 nmake -f makefile.vc TCLDIR=..\..\tcl8.5.2 INSTALLDIR=..\..\tcltk install
105 XXX Should we compile with OPTS=threads?
107 XXX I have no idea whether "nmake -f makefile.vc test" passed or
108 XXX failed. It popped up tons of little windows, and did lots of
109 XXX stuff, and nothing blew up.
114 nmake -f python.mak TCL_MAJOR=8 TCL_MINOR=5 TCL_PATCH=2 MACHINE=IX86 DEBUG=0
115 nmake -f python.mak TCL_MAJOR=8 TCL_MINOR=5 TCL_PATCH=2 MACHINE=IX86 DEBUG=0 INSTALL_DIR=..\..\tcltk install
118 Python wrapper for the libbz2 compression library. Homepage
120 Download the source from the python.org copy into the dist
123 svn export http://svn.python.org/projects/external/bzip2-1.0.5
125 And requires building bz2 first.
128 nmake -f makefile.msc
130 All of this managed to build bzip2-1.0.5\libbz2.lib, which the Python
135 To use the version of bsddb that Python is built with by default, invoke
136 (in the dist directory)
138 svn export http://svn.python.org/projects/external/db-4.7.25.0 db-4.7.25
140 Then open db-4.7.25\build_windows\Berkeley_DB.dsw and build the
141 "db_static" project for "Release" mode.
143 Alternatively, if you want to start with the original sources,
144 go to Oracle's download page:
145 http://www.oracle.com/technology/software/products/berkeley-db/db/
147 and download version 4.7.25.
149 With or without strong cryptography? You can choose either with or
150 without strong cryptography, as per the instructions below. By
151 default, Python is built and distributed WITHOUT strong crypto.
153 Unpack the sources; if you downloaded the non-crypto version, rename
154 the directory from db-4.7.25.NC to db-4.7.25.
156 Now apply any patches that apply to your version.
158 To run extensive tests, pass "-u bsddb" to regrtest.py. test_bsddb3.py
159 is then enabled. Running in verbose mode may be helpful.
161 XXX The test_bsddb3 tests don't always pass, on Windows (according to
162 XXX me) or on Linux (according to Barry). (I had much better luck
163 XXX on Win2K than on Win98SE.) The common failure mode across platforms
165 XXX DBAgainError: (11, 'Resource temporarily unavailable -- unable
166 XXX to join the environment')
168 XXX and it appears timing-dependent. On Win2K I also saw this once:
170 XXX test02_SimpleLocks (bsddb.test.test_thread.HashSimpleThreaded) ...
171 XXX Exception in thread reader 1:
172 XXX Traceback (most recent call last):
173 XXX File "C:\Code\python\lib\threading.py", line 411, in __bootstrap
175 XXX File "C:\Code\python\lib\threading.py", line 399, in run
176 XXX apply(self.__target, self.__args, self.__kwargs)
177 XXX File "C:\Code\python\lib\bsddb\test\test_thread.py", line 268, in
180 XXX DBLockDeadlockError: (-30996, 'DB_LOCK_DEADLOCK: Locker killed
181 XXX to resolve a deadlock')
183 XXX I'm told that DBLockDeadlockError is expected at times. It
184 XXX doesn't cause a test to fail when it happens (exceptions in
185 XXX threads are invisible to unittest).
189 Python wrapper for SQLite library.
191 Get the source code through
193 svn export http://svn.python.org/projects/external/sqlite-source-3.3.4
195 To use the extension module in a Python build tree, copy sqlite3.dll into
200 Python wrapper for the secure sockets library.
202 Get the latest source code for OpenSSL from
203 http://www.openssl.org
205 You (probably) don't want the "engine" code. For example, get
206 openssl-0.9.8g.tar.gz
208 openssl-engine-0.9.8g.tar.gz
210 Unpack into the "dist" directory, retaining the folder name from
211 the archive - for example, the latest stable OpenSSL will install as
214 You can (theoretically) use any version of OpenSSL you like - the
215 build process will automatically select the latest version.
217 You must also install ActivePerl from
218 http://www.activestate.com/Products/ActivePerl/
219 as this is used by the OpenSSL build process. Complain to them <wink>.
221 The MSVC project simply invokes PC/VC6/build_ssl.py to perform
222 the build. This Python script locates and builds your OpenSSL
223 installation, then invokes a simple makefile to build the final .pyd.
225 build_ssl.py attempts to catch the most common errors (such as not
226 being able to find OpenSSL sources, or not being able to find a Perl
227 that works with OpenSSL) and give a reasonable error message.
228 If you have a problem that doesn't seem to be handled correctly
229 (eg, you know you have ActivePerl but we can't find it), please take
230 a peek at build_ssl.py and suggest patches. Note that build_ssl.py
231 should be able to be run directly from the command-line.
233 build_ssl.py/MSVC isn't clever enough to clean OpenSSL - you must do
237 YOUR OWN EXTENSION DLLs
238 -----------------------
239 If you want to create your own extension module DLL, there's an example
240 with easy-to-follow instructions in ../PC/example/; read the file
241 readme.txt there first.