This commit was manufactured by cvs2svn to create tag 'r23b1-mac'.
[python/dscho.git] / README
blobc35c77e5bcc01672315e32d40ba877f092022d46
1 This is Python version 2.3 beta 1
2 =================================
4 Copyright (c) 2001, 2002, 2003 Python Software Foundation.
5 All rights reserved.
7 Copyright (c) 2000 BeOpen.com.
8 All rights reserved.
10 Copyright (c) 1995-2001 Corporation for National Research Initiatives.
11 All rights reserved.
13 Copyright (c) 1991-1995 Stichting Mathematisch Centrum.
14 All rights reserved.
17 License information
18 -------------------
20 See the file "LICENSE" for information on the history of this
21 software, terms & conditions for usage, and a DISCLAIMER OF ALL
22 WARRANTIES.
24 This Python distribution contains no GNU General Public Licensed
25 (GPLed) code so it may be used in proprietary projects just like prior
26 Python distributions.  There are interfaces to some GNU code but these
27 are entirely optional.
29 All trademarks referenced herein are property of their respective
30 holders.
33 What's new in this release?
34 ---------------------------
36 See the file "Misc/NEWS".
38 If you don't read instructions
39 ------------------------------
41 Congratulations on getting this far. :-)
43 To start building right away (on UNIX): type "./configure" in the
44 current directory and when it finishes, type "make".  This creates an
45 executable "./python"; to install in /usr/local, first do "su root"
46 and then "make install".
48 The section `Build instructions' below is still recommended reading,
49 especially the part on customizing Modules/Setup.
52 What is Python anyway?
53 ----------------------
55 Python is an interpreted object-oriented programming language suitable
56 (amongst other uses) for distributed application development,
57 scripting, numeric computing and system testing.  Python is often
58 compared to Tcl, Perl, Java, JavaScript, Visual Basic or Scheme.  To
59 find out more about what Python can do for you, point your browser to
60 http://www.python.org/.
63 How do I learn Python?
64 ----------------------
66 The official tutorial is still a good place to start; see
67 http://www.python.org/doc/ for online and downloadable versions, as
68 well as a list of other introductions, and reference documentation.
70 There's a quickly growing set of books on Python.  See
71 http://www.python.org/psa/bookstore/ for a list.
74 Documentation
75 -------------
77 All documentation is provided online in a variety of formats.  In
78 order of importance for new users: Tutorial, Library Reference,
79 Language Reference, Extending & Embedding, and the Python/C API.  The
80 Library Reference is especially of immense value since much of
81 Python's power is described there, including the built-in data types
82 and functions!
84 All documentation is also available online at the Python web site
85 (http://www.python.org/doc/, see below).  It is available online for
86 occasional reference, or can be downloaded in many formats for faster
87 access.  The documentation is available in HTML, PostScript, PDF, and
88 LaTeX formats; the LaTeX version is primarily for documentation
89 authors, translators, and people with special formatting requirements.
91 The best documentation for the new (in Python 2.2) type/class
92 unification features is Guido's tutorial introduction, at
94     http://www.python.org/2.2.1/descrintro.html
97 Web sites
98 ---------
100 New Python releases and related technologies are published at
101 http://www.python.org/.  Come visit us!
103 There's also a Python community web site at
104 http://starship.python.net/.
107 Newsgroups and Mailing Lists
108 ----------------------------
110 Read comp.lang.python, a high-volume discussion newsgroup about
111 Python, or comp.lang.python.announce, a low-volume moderated newsgroup
112 for Python-related announcements.  These are also accessible as
113 mailing lists: see http://www.python.org/psa/MailingLists.html for an
114 overview of the many Python-related mailing lists.
116 Archives are accessible via the Google Groups usenet archive; see
117 http://groups.google.com/.  The mailing lists are also archived, see
118 http://www.python.org/psa/MailingLists.html for details.
121 Bug reports
122 -----------
124 To report or search for bugs, please use the Python Bug
125 Tracker at http://sourceforge.net/bugs/?group_id=5470.
128 Patches and contributions
129 -------------------------
131 To submit a patch or other contribution, please use the Python Patch
132 Manager at http://sourceforge.net/patch/?group_id=5470.  Guidelines
133 for patch submission may be found at http://www.python.org/patches/.
135 If you have a proposal to change Python, it's best to submit a Python
136 Enhancement Proposal (PEP) first.  All current PEPs, as well as
137 guidelines for submitting a new PEP, are listed at
138 http://python.sourceforge.net/peps/.
141 Questions
142 ---------
144 For help, if you can't find it in the manuals or on the web site, it's
145 best to post to the comp.lang.python or the Python mailing list (see
146 above).  If you specifically don't want to involve the newsgroup or
147 mailing list, send questions to help@python.org (a group of volunteers
148 who answer questions as they can).  The newsgroup is the most
149 efficient way to ask public questions.
152 Build instructions
153 ==================
155 Before you can build Python, you must first configure it.
156 Fortunately, the configuration and build process has been automated
157 for Unix and Linux installations, so all you usually have to do is
158 type a few commands and sit back.  There are some platforms where
159 things are not quite as smooth; see the platform specific notes below.
160 If you want to build for multiple platforms sharing the same source
161 tree, see the section on VPATH below.
163 Start by running the script "./configure", which determines your
164 system configuration and creates the Makefile.  (It takes a minute or
165 two -- please be patient!)  You may want to pass options to the
166 configure script -- see the section below on configuration options and
167 variables.  When it's done, you are ready to run make.
169 To build Python, you normally type "make" in the toplevel directory.
170 If you have changed the configuration, the Makefile may have to be
171 rebuilt.  In this case you may have to run make again to correctly
172 build your desired target.  The interpreter executable is built in the
173 top level directory.
175 Once you have built a Python interpreter, see the subsections below on
176 testing and installation.  If you run into trouble, see the next
177 section.
179 Previous versions of Python used a manual configuration process that
180 involved editing the file Modules/Setup.  While this file still exists
181 and manual configuration is still supported, it is rarely needed any
182 more: almost all modules are automatically built as appropriate under
183 guidance of the setup.py script, which is run by Make after the
184 interpreter has been built.
187 Troubleshooting
188 ---------------
190 See also the platform specific notes in the next section.
192 If you run into other trouble, see section 3 of the FAQ
193 (http://www.python.org/cgi-bin/faqw.py or
194 http://www.python.org/doc/FAQ.html) for hints on what can go wrong,
195 and how to fix it.
197 If you rerun the configure script with different options, remove all
198 object files by running "make clean" before rebuilding.  Believe it or
199 not, "make clean" sometimes helps to clean up other inexplicable
200 problems as well.  Try it before sending in a bug report!
202 If the configure script fails or doesn't seem to find things that
203 should be there, inspect the config.log file.  When you fix a
204 configure problem, be sure to remove config.cache!
206 If you get a warning for every file about the -Olimit option being no
207 longer supported, you can ignore it.  There's no foolproof way to know
208 whether this option is needed; all we can do is test whether it is
209 accepted without error.  On some systems, e.g. older SGI compilers, it
210 is essential for performance (specifically when compiling ceval.c,
211 which has more basic blocks than the default limit of 1000).  If the
212 warning bothers you, edit the Makefile to remove "-Olimit 1500" from
213 the OPT variable.
215 If you get failures in test_long, or sys.maxint gets set to -1, you
216 are probably experiencing compiler bugs, usually related to
217 optimization.  This is a common problem with some versions of gcc, and
218 some vendor-supplied compilers, which can sometimes be worked around
219 by turning off optimization.  Consider switching to stable versions
220 (gcc 2.95.2, or contact your vendor.)
222 From Python 2.0 onward, all Python C code is ANSI C.  Compiling using
223 old K&R-C-only compilers is no longer possible.  ANSI C compilers are
224 available for all modern systems, either in the form of updated
225 compilers from the vendor, or one of the free compilers (gcc).
227 Unsupported systems
228 -------------------
230 A number of features are not supported in Python 2.3 anymore. Some
231 support code is still present, but will be removed in Python 2.4.
232 If you still need to use current Python versions on these systems,
233 please send a message to python-dev@python.org indicating that you
234 volunteer to support this system.
236 More specifically, the following systems are not supported any
237 longer:
238 - SunOS 4
239 - DYNIX
240 - dgux
241 - Minix
242 - Irix 4 and --with-sgi-dl
243 - Linux 1
244 - Systems defining __d6_pthread_create (configure.in)
245 - Systems defining PY_PTHREAD_D4, PY_PTHREAD_D6,
246   or PY_PTHREAD_D7 in thread_pthread.h
247 - Systems using --with-dl-dld
248 - Systems using --without-universal-newlines
250 Platform specific notes
251 -----------------------
253 (Some of these may no longer apply.  If you find you can build Python
254 on these platforms without the special directions mentioned here,
255 submit a documentation bug report to SourceForge (see Bug Reports
256 above) so we can remove them!)
258 64-bit platforms: The modules audioop, imageop and rgbimg don't work.
259         The setup.py script disables them on 64-bit installations.
260         Don't try to enable them in the Modules/Setup file.  They
261         contain code that is quite wordsize sensitive.  (If you have a
262         fix, let us know!)
264 Solaris: When using Sun's C compiler with threads, at least on Solaris
265         2.5.1, you need to add the "-mt" compiler option (the simplest
266         way is probably to specify the compiler with this option as
267         the "CC" environment variable when running the configure
268         script).
270         When using GCC on Solaris, beware of binutils 2.13 or GCC
271         versions built using it.  This mistakenly enables the
272         -zcombreloc option which creates broken shared libraries on
273         Solaris.  binutils 2.12 works, and the binutils maintainers
274         are aware of the problem.  Binutils 2.13.1 only partially
275         fixed things.  It appears that 2.13.2 solves the problem
276         completely.  This problem is known to occur with Solaris 2.7
277         and 2.8, but may also affect earlier and later versions of the
278         OS.
280         When the dynamic loader complains about errors finding shared
281         libraries, such as
283         ld.so.1: ./python: fatal: libstdc++.so.5: open failed: 
284         No such file or directory 
286         you need to first make sure that the library is available on
287         your system. Then, you need to instruct the dynamic loader how
288         to find it. You can choose any of the following strategies:
290         1. When compiling Python, set LD_RUN_PATH to the directories
291            containing missing libraries.
292         2. When running Python, set LD_LIBRARY_PATH to these directories.
293         3. Use crle(8) to extend the search path of the loader.
294         4. Modify the installed GCC specs file, adding -R options into the
295            *link: section.
297 Linux:  A problem with threads and fork() was tracked down to a bug in
298         the pthreads code in glibc version 2.0.5; glibc version 2.0.7
299         solves the problem.  This causes the popen2 test to fail;
300         problem and solution reported by Pablo Bleyer.
302         Under Linux systems using GNU libc 2 (aka libc6), the crypt
303         module now needs the -lcrypt option.  The setup.py script
304         takes care of this automatically.
306 Red Hat Linux: There's an executable /usr/bin/python which is Python
307         1.5.2 on most Red Hat installations; several key Red Hat tools
308         require this version.  Python 2.1.x may be installed as
309         /usr/bin/python2.  The Makefile installs Python as
310         /usr/local/bin/python, which may or may not take precedence
311         over /usr/bin/python, depending on how you have set up $PATH.
313 FreeBSD 3.x and probably platforms with NCurses that use libmytinfo or
314         similar: When using cursesmodule, the linking is not done in
315         the correct order with the defaults.  Remove "-ltermcap" from
316         the readline entry in Setup, and use as curses entry: "curses
317         cursesmodule.c -lmytinfo -lncurses -ltermcap" - "mytinfo" (so
318         called on FreeBSD) should be the name of the auxiliary library
319         required on your platform.  Normally, it would be linked
320         automatically, but not necessarily in the correct order.
322 BSDI:   BSDI versions before 4.1 have known problems with threads,
323         which can cause strange errors in a number of modules (for
324         instance, the 'test_signal' test script will hang forever.)
325         Turning off threads (with --with-threads=no) or upgrading to
326         BSDI 4.1 solves this problem.
328 DEC Unix: Run configure with --with-dec-threads, or with
329         --with-threads=no if no threads are desired (threads are on by
330         default).  When using GCC, it is possible to get an internal
331         compiler error if optimization is used.  This was reported for
332         GCC 2.7.2.3 on selectmodule.c.  Manually compile the affected
333         file without optimization to solve the problem.
335 DEC Ultrix: compile with GCC to avoid bugs in the native compiler,
336         and pass SHELL=/bin/sh5 to Make when installing.
338 AIX:    A complete overhaul of the shared library support is now in
339         place.  See Misc/AIX-NOTES for some notes on how it's done.
340         (The optimizer bug reported at this place in previous releases
341         has been worked around by a minimal code change.) If you get
342         errors about pthread_* functions, during compile or during
343         testing, try setting CC to a thread-safe (reentrant) compiler,
344         like "cc_r".  For full C++ module support, set CC="xlC_r" (or
345         CC="xlC" without thread support).
347 HP-UX:  When using threading, you may have to add -D_REENTRANT to the
348         OPT variable in the top-level Makefile; reported by Pat Knight,
349         this seems to make a difference (at least for HP-UX 10.20)
350         even though pyconfig.h defines it.
352 HP PA-RISC 2.0: A recent bug report (http://www.python.org/sf/546117)
353         suggests that the C compiler in this 64-bit system has bugs
354         in the optimizer that break Python.  Compiling without
355         optimization solves the problems.
357 SCO:    The following apply to SCO 3 only; Python builds out of the box
358         on SCO 5 (or so we've heard).
360         1) Everything works much better if you add -U__STDC__ to the
361         defs.  This is because all the SCO header files are broken.
362         Anything that isn't mentioned in the C standard is
363         conditionally excluded when __STDC__ is defined.
365         2) Due to the U.S. export restrictions, SCO broke the crypt
366         stuff out into a separate library, libcrypt_i.a so the LIBS
367         needed be set to:
369                 LIBS=' -lsocket -lcrypt_i'
371 UnixWare: There are known bugs in the math library of the system, as well as
372         problems in the handling of threads (calling fork in one
373         thread may interrupt system calls in others). Therefore, test_math and
374         tests involving threads will fail until those problems are fixed.
376 SunOS 4.x: When using the SunPro C compiler, you may want to use the
377         '-Xa' option instead of '-Xc', to enable some needed non-ANSI
378         Sunisms.
379         THIS SYSTEM IS NO LONGER SUPPORTED.
381 NeXT:   Not supported anymore. Start with the MacOSX/Darwin code if you
382         want to revive it.
384 QNX:    Chris Herborth (chrish@qnx.com) writes:
385         configure works best if you use GNU bash; a port is available on
386         ftp.qnx.com in /usr/free.  I used the following process to build,
387         test and install Python 1.5.x under QNX:
389         1) CONFIG_SHELL=/usr/local/bin/bash CC=cc RANLIB=: \
390             ./configure --verbose --without-gcc --with-libm=""
392         2) edit Modules/Setup to activate everything that makes sense for
393            your system... tested here at QNX with the following modules:
395                 array, audioop, binascii, cPickle, cStringIO, cmath,
396                 crypt, curses, errno, fcntl, gdbm, grp, imageop,
397                 _locale, math, md5, new, operator, parser, pcre,
398                 posix, pwd, readline, regex, reop, rgbimg, rotor,
399                 select, signal, socket, soundex, strop, struct,
400                 syslog, termios, time, timing, zlib, audioop, imageop, rgbimg
402         3) make SHELL=/usr/local/bin/bash
404            or, if you feel the need for speed:
406            make SHELL=/usr/local/bin/bash OPT="-5 -Oil+nrt"
408         4) make SHELL=/usr/local/bin/bash test
410            Using GNU readline 2.2 seems to behave strangely, but I
411            think that's a problem with my readline 2.2 port.  :-\
413         5) make SHELL=/usr/local/bin/bash install
415         If you get SIGSEGVs while running Python (I haven't yet, but
416         I've only run small programs and the test cases), you're
417         probably running out of stack; the default 32k could be a
418         little tight.  To increase the stack size, edit the Makefile
419         to read: LDFLAGS = -N 48k
421 BeOS:   See Misc/BeOS-NOTES for notes about compiling/installing
422         Python on BeOS R3 or later.  Note that only the PowerPC
423         platform is supported for R3; both PowerPC and x86 are
424         supported for R4.
426 Cray T3E: Mark Hadfield (m.hadfield@niwa.co.nz) writes:
427         Python can be built satisfactorily on a Cray T3E but based on
428         my experience with the NIWA T3E (2002-05-22, version 2.2.1)
429         there are a few bugs and gotchas. For more information see a
430         thread on comp.lang.python in May 2002 entitled "Building
431         Python on Cray T3E".
433         1) Use Cray's cc and not gcc. The latter was reported not to
434            work by Konrad Hinsen. It may work now, but it may not.
436         2) To set sys.platform to something sensible, pass the
437            following environment variable to the configure script:
439              MACHDEP=unicosmk
441         2) Run configure with option "--enable-unicode=ucs4".
443         3) The Cray T3E does not support dynamic linking, so extension
444            modules have to be built by adding (or uncommenting) lines
445            in Modules/Setup. The minimum set of modules is
447              posix, new, _sre, unicodedata
449            On NIWA's vanilla T3E system the following have also been
450            included successfully:
452              _codecs, _locale, _socket, _symtable, _testcapi, _weakref
453              array, binascii, cmath, cPickle, crypt, cStringIO, dbm
454              errno, fcntl, grp, math, md5, operator, parser, pcre, pwd
455              regex, rotor, select, struct, strop, syslog, termios
456              time, timing, xreadlines
458         4) Once the python executable and library have been built, make
459            will execute setup.py, which will attempt to build remaining
460            extensions and link them dynamically. Each of these attempts
461            will fail but should not halt the make process. This is
462            normal.
464         5) Running "make test" uses a lot of resources and causes
465            problems on our system. You might want to try running tests
466            singly or in small groups.
468 SGI:    SGI's standard "make" utility (/bin/make or /usr/bin/make)
469         does not check whether a command actually changed the file it
470         is supposed to build.  This means that whenever you say "make"
471         it will redo the link step.  The remedy is to use SGI's much
472         smarter "smake" utility (/usr/sbin/smake), or GNU make.  If
473         you set the first line of the Makefile to #!/usr/sbin/smake
474         smake will be invoked by make (likewise for GNU make).
476         WARNING: There are bugs in the optimizer of some versions of
477         SGI's compilers that can cause bus errors or other strange
478         behavior, especially on numerical operations.  To avoid this,
479         try building with "make OPT=".
481 OS/2:   If you are running Warp3 or Warp4 and have IBM's VisualAge C/C++
482         compiler installed, just change into the pc\os2vacpp directory
483         and type NMAKE.  Threading and sockets are supported by default
484         in the resulting binaries of PYTHON15.DLL and PYTHON.EXE.
486 Monterey (64-bit AIX): The current Monterey C compiler (Visual Age)
487         uses the OBJECT_MODE={32|64} environment variable to set the
488         compilation mode to either 32-bit or 64-bit (32-bit mode is
489         the default).  Presumably you want 64-bit compilation mode for
490         this 64-bit OS.  As a result you must first set OBJECT_MODE=64
491         in your environment before configuring (./configure) or
492         building (make) Python on Monterey.
494 Reliant UNIX: The thread support does not compile on Reliant UNIX, and
495         there is a (minor) problem in the configure script for that
496         platform as well.  This should be resolved in time for a
497         future release.
499 MacOSX: The tests will crash on both 10.1 and 10.2 with SEGV in
500         test_re and test_sre due to the small default stack size.  If
501         you set the stack size to 2048 before doing a "make test" the
502         failure can be avoided.  If you're using the tcsh (the default
503         on OSX), or csh shells use "limit stacksize 2048" and for the
504         bash shell, use "ulimit -s 2048".
506         On naked Darwin you may want to add the configure option
507         "--disable-toolbox-glue" to disable the glue code for the Carbon
508         interface modules. The modules themselves are currently only built
509         if you add the --enable-framework option, see below.
511         On a clean OSX /usr/local does not exist. Do a
512         "sudo mkdir -m 775 /usr/local"
513         before you do a make install. It is probably not a good idea to
514         do "sudo make install" which installs everything as superuser,
515         as this may later cause problems when installing distutils-based
516         additions.
517         
518         Some people have reported problems building Python after using "fink"
519         to install additional unix software. Disabling fink (remove all references
520         to /sw from your .profile or .login) should solve this.
522         You may want to try the configure option "--enable-framework"
523         which installs Python as a framework. The location can be set
524         as argument to the --enable-framework option (default
525         /Library/Frameworks). A framework install is probably needed if you
526         want to use any Aqua-based GUI toolkit (whether Tkinter, wxPython,
527         Carbon, Cocoa or anything else).
528         
529         See Mac/OSX/README for more information on framework builds.
531 Cygwin: With recent (relative to the time of writing, 2001-12-19)
532         Cygwin installations, there are problems with the interaction
533         of dynamic linking and fork().  This manifests itself in build
534         failures during the execution of setup.py.
536         There are two workarounds that both enable Python (albeit
537         without threading support) to build and pass all tests on
538         NT/2000 (and most likely XP as well, though reports of testing
539         on XP would be appreciated).
541         The workarounds:
543         (a) the band-aid fix is to link the _socket module statically
544         rather than dynamically (which is the default).
546         To do this, run "./configure --with-threads=no" including any
547         other options you need (--prefix, etc.).  Then in Modules/Setup
548         uncomment the lines:
550         #SSL=/usr/local/ssl
551         #_socket socketmodule.c \
552         #       -DUSE_SSL -I$(SSL)/include -I$(SSL)/include/openssl \
553         #       -L$(SSL)/lib -lssl -lcrypto
555         and remove "local/" from the SSL variable.  Finally, just run
556         "make"!
558         (b) The "proper" fix is to rebase the Cygwin DLLs to prevent
559         base address conflicts.  Details on how to do this can be
560         found in the following mail:
562            http://sources.redhat.com/ml/cygwin/2001-12/msg00894.html
564         It is hoped that a version of this solution will be
565         incorporated into the Cygwin distribution fairly soon.
567         Two additional problems:
569         (1) Threading support should still be disabled due to a known
570         bug in Cygwin pthreads that causes test_threadedtempfile to
571         hang.
573         (2) The _curses module does not build.  This is a known
574         Cygwin ncurses problem that should be resolved the next time
575         that this package is released.
577         On older versions of Cygwin, test_poll may hang and test_strftime
578         may fail.
580         The situation on 9X/Me is not accurately known at present.
581         Some time ago, there were reports that the following
582         regression tests failed:
584             test_pwd
585             test_select (hang)
586             test_socket
588         Due to the test_select hang on 9X/Me, one should run the
589         regression test using the following:
591             make TESTOPTS='-l -x test_select' test
593         News regarding these platforms with more recent Cygwin
594         versions would be appreciated!
596 AtheOS: From Octavian Cerna <tavy at ylabs.com>:
598         Before building:
600             Make sure you have shared versions of the libraries you
601             want to use with Python. You will have to compile them
602             yourself, or download precompiled packages.
604             Recommended libraries:
606                 ncurses-4.2
607                 readline-4.2a
608                 zlib-1.1.4
610         Build:
612             $ ./configure --prefix=/usr/python
613             $ make
615             Python is always built as a shared library, otherwise
616             dynamic loading would not work.
618         Testing:
620             $ make test
622         Install:
624             # make install
625             # pkgmanager -a /usr/python
628         AtheOS issues:
630             - large file support: due to a stdio bug in glibc/libio,
631               access to large files may not work correctly.  fseeko()
632               tries to seek to a negative offset.  ftello() returns a
633               negative offset, it looks like a 32->64bit
634               sign-extension issue.  The lowlevel functions (open,
635               lseek, etc) are OK.
636             - sockets: AF_UNIX is defined in the C library and in
637               Python, but not implemented in the system.
638             - select: poll is available in the C library, but does not
639               work (It does not return POLLNVAL for bad fds and
640               hangs).
641             - posix: statvfs and fstatvfs always return ENOSYS.
642             - disabled modules:
643                 - mmap: not yet implemented in AtheOS
644                 - nis: broken (on an unconfigured system
645                   yp_get_default_domain() returns junk instead of
646                   error)
647                 - dl: dynamic loading doesn't work via dlopen()
648                 - resource: getrimit and setrlimit are not yet
649                   implemented
651             - if you are getting segmentation faults, you probably are
652               low on memory.  AtheOS doesn't handle very well an
653               out-of-memory condition and simply SEGVs the process.
655         Tested on:
657             AtheOS-0.3.7
658             gcc-2.95
659             binutils-2.10
660             make-3.78
663 Configuring the bsddb and dbm modules
664 -------------------------------------
666 Beginning with Python version 2.3, the PyBsddb package
667 <http://pybsddb.sf.net/> was adopted into Python as the bsddb package,
668 exposing a set of package-level functions which provide
669 backwards-compatible behavior.  Only versions 3.1 through 4.1 of
670 Sleepycat's libraries provide the necessary API, so older versions
671 aren't supported through this interface.  The old bsddb module has
672 been retained as bsddb185, though it is not built by default.  Users
673 wishing to use it will have to tweak Modules/Setup to build it.  The
674 dbm module will still be built against the Sleepycat libraries if
675 other preferred alternatives (ndbm, gdbm) are not found, though
676 versions of the Sleepycat library prior to 3.1 are not considered.
679 Configuring threads
680 -------------------
682 As of Python 2.0, threads are enabled by default.  If you wish to
683 compile without threads, or if your thread support is broken, pass the
684 --with-threads=no switch to configure.  Unfortunately, on some
685 platforms, additional compiler and/or linker options are required for
686 threads to work properly.  Below is a table of those options,
687 collected by Bill Janssen.  We would love to automate this process
688 more, but the information below is not enough to write a patch for the
689 configure.in file, so manual intervention is required.  If you patch
690 the configure.in file and are confident that the patch works, please
691 send in the patch.  (Don't bother patching the configure script itself
692 -- it is regenerated each time the configure.in file changes.)
694 Compiler switches for threads
695 .............................
697 The definition of _REENTRANT should be configured automatically, if
698 that does not work on your system, or if _REENTRANT is defined
699 incorrectly, please report that as a bug.
701     OS/Compiler/threads                     Switches for use with threads
702     (POSIX is draft 10, DCE is draft 4)     compile & link
704     SunOS 5.{1-5}/{gcc,SunPro cc}/solaris   -mt
705     SunOS 5.5/{gcc,SunPro cc}/POSIX         (nothing)
706     DEC OSF/1 3.x/cc/DCE                    -threads
707             (butenhof@zko.dec.com)
708     Digital UNIX 4.x/cc/DCE                 -threads
709             (butenhof@zko.dec.com)
710     Digital UNIX 4.x/cc/POSIX               -pthread
711             (butenhof@zko.dec.com)
712     AIX 4.1.4/cc_r/d7                       (nothing)
713             (buhrt@iquest.net)
714     AIX 4.1.4/cc_r4/DCE                     (nothing)
715             (buhrt@iquest.net)
716     IRIX 6.2/cc/POSIX                       (nothing)
717             (robertl@cwi.nl)
720 Linker (ld) libraries and flags for threads
721 ...........................................
723     OS/threads                          Libraries/switches for use with threads
725     SunOS 5.{1-5}/solaris               -lthread
726     SunOS 5.5/POSIX                     -lpthread
727     DEC OSF/1 3.x/DCE                   -lpthreads -lmach -lc_r -lc
728             (butenhof@zko.dec.com)
729     Digital UNIX 4.x/DCE                -lpthreads -lpthread -lmach -lexc -lc
730             (butenhof@zko.dec.com)
731     Digital UNIX 4.x/POSIX              -lpthread -lmach -lexc -lc
732             (butenhof@zko.dec.com)
733     AIX 4.1.4/{draft7,DCE}              (nothing)
734             (buhrt@iquest.net)
735     IRIX 6.2/POSIX                      -lpthread
736             (jph@emilia.engr.sgi.com)
739 Building a shared libpython
740 ---------------------------
742 Starting with Python 2.3, the majority of the interpreter can be built
743 into a shared library, which can then be used by the interpreter 
744 executable, and by applications embedding Python. To enable this feature,
745 configure with --enable-shared. 
747 If you do so, a static library will be created in addition to the
748 shared library, which uses the same object files as the shared library
749 In particular, the library likely object files using
750 position-independent code (PIC) if PIC flags are needed for the shared
751 library.
754 Configuring additional built-in modules
755 ---------------------------------------
757 Starting with Python 2.1, the setup.py script at the top of the source
758 distribution attempts to detect which modules can be built and
759 automatically compiles them.  Autodetection doesn't always work, so
760 you can still customize the configuration by editing the Modules/Setup
761 file; but this should be considered a last resort.  The rest of this
762 section only applies if you decide to edit the Modules/Setup file.
763 You also need this to enable static linking of certain modules (which
764 is needed to enable profiling on some systems).
766 This file is initially copied from Setup.dist by the configure script;
767 if it does not exist yet, create it by copying Modules/Setup.dist
768 yourself (configure will never overwrite it).  Never edit Setup.dist
769 -- always edit Setup or Setup.local (see below).  Read the comments in
770 the file for information on what kind of edits are allowed.  When you
771 have edited Setup in the Modules directory, the interpreter will
772 automatically be rebuilt the next time you run make (in the toplevel
773 directory).
775 Many useful modules can be built on any Unix system, but some optional
776 modules can't be reliably autodetected.  Often the quickest way to
777 determine whether a particular module works or not is to see if it
778 will build: enable it in Setup, then if you get compilation or link
779 errors, disable it -- you're either missing support or need to adjust
780 the compilation and linking parameters for that module.
782 On SGI IRIX, there are modules that interface to many SGI specific
783 system libraries, e.g. the GL library and the audio hardware.  These
784 modules will not be built by the setup.py script.
786 In addition to the file Setup, you can also edit the file Setup.local.
787 (the makesetup script processes both).  You may find it more
788 convenient to edit Setup.local and leave Setup alone.  Then, when
789 installing a new Python version, you can copy your old Setup.local
790 file.
793 Setting the optimization/debugging options
794 ------------------------------------------
796 If you want or need to change the optimization/debugging options for
797 the C compiler, assign to the OPT variable on the toplevel make
798 command; e.g. "make OPT=-g" will build a debugging version of Python
799 on most platforms.  The default is OPT=-O; a value for OPT in the
800 environment when the configure script is run overrides this default
801 (likewise for CC; and the initial value for LIBS is used as the base
802 set of libraries to link with).
804 When compiling with GCC, the default value of OPT will also include
805 the -Wall and -Wstrict-prototypes options.
807 Additional debugging code to help debug memory management problems can
808 be enabled by using the --with-pydebug option to the configure script.
811 Profiling
812 ---------
814 If you want C profiling turned on, the easiest way is to run configure
815 with the CC environment variable to the necessary compiler
816 invocation.  For example, on Linux, this works for profiling using
817 gprof(1):
819     CC="gcc -pg" ./configure
821 Note that on Linux, gprof apparently does not work for shared
822 libraries.  The Makefile/Setup mechanism can be used to compile and
823 link most extension modules statically.
826 Testing
827 -------
829 To test the interpreter, type "make test" in the top-level directory.
830 This runs the test set twice (once with no compiled files, once with
831 the compiled files left by the previous test run).  The test set
832 produces some output.  You can generally ignore the messages about
833 skipped tests due to optional features which can't be imported.
834 If a message is printed about a failed test or a traceback or core
835 dump is produced, something is wrong.  On some Linux systems (those
836 that are not yet using glibc 6), test_strftime fails due to a
837 non-standard implementation of strftime() in the C library. Please
838 ignore this, or upgrade to glibc version 6.
840 IMPORTANT: If the tests fail and you decide to mail a bug report,
841 *don't* include the output of "make test".  It is useless.  Run the
842 failing test manually, as follows:
844         ./python ./Lib/test/test_whatever.py
846 (substituting the top of the source tree for '.' if you built in a
847 different directory).  This runs the test in verbose mode.
850 Installing
851 ----------
853 To install the Python binary, library modules, shared library modules
854 (see below), include files, configuration files, and the manual page,
855 just type
857         make install
859 This will install all platform-independent files in subdirectories of
860 the directory given with the --prefix option to configure or to the
861 `prefix' Make variable (default /usr/local).  All binary and other
862 platform-specific files will be installed in subdirectories if the
863 directory given by --exec-prefix or the `exec_prefix' Make variable
864 (defaults to the --prefix directory) is given.
866 All subdirectories created will have Python's version number in their
867 name, e.g. the library modules are installed in
868 "/usr/local/lib/python<version>/" by default, where <version> is the
869 <major>.<minor> release number (e.g. "2.1").  The Python binary is
870 installed as "python<version>" and a hard link named "python" is
871 created.  The only file not installed with a version number in its
872 name is the manual page, installed as "/usr/local/man/man1/python.1"
873 by default.
875 If you have a previous installation of Python that you don't
876 want to replace yet, use
878         make altinstall
880 This installs the same set of files as "make install" except it
881 doesn't create the hard link to "python<version>" named "python" and
882 it doesn't install the manual page at all.
884 The only thing you may have to install manually is the Python mode for
885 Emacs found in Misc/python-mode.el.  (But then again, more recent
886 versions of Emacs may already have it.)  Follow the instructions that
887 came with Emacs for installation of site-specific files.
889 On Mac OS X, if you have configured Python with --enable-framework, you
890 should use "make frameworkinstall" to do the installation. Note that this
891 installs the Python executable in a place that is not normally on your
892 PATH, you may want to set up a symlink in /usr/local/bin.
895 Configuration options and variables
896 -----------------------------------
898 Some special cases are handled by passing options to the configure
899 script.
901 WARNING: if you rerun the configure script with different options, you
902 must run "make clean" before rebuilding.  Exceptions to this rule:
903 after changing --prefix or --exec-prefix, all you need to do is remove
904 Modules/getpath.o.
906 --with(out)-gcc: The configure script uses gcc (the GNU C compiler) if
907         it finds it.  If you don't want this, or if this compiler is
908         installed but broken on your platform, pass the option
909         --without-gcc.  You can also pass "CC=cc" (or whatever the
910         name of the proper C compiler is) in the environment, but the
911         advantage of using --without-gcc is that this option is
912         remembered by the config.status script for its --recheck
913         option.
915 --prefix, --exec-prefix: If you want to install the binaries and the
916         Python library somewhere else than in /usr/local/{bin,lib},
917         you can pass the option --prefix=DIRECTORY; the interpreter
918         binary will be installed as DIRECTORY/bin/python and the
919         library files as DIRECTORY/lib/python/*.  If you pass
920         --exec-prefix=DIRECTORY (as well) this overrides the
921         installation prefix for architecture-dependent files (like the
922         interpreter binary).  Note that --prefix=DIRECTORY also
923         affects the default module search path (sys.path), when
924         Modules/config.c is compiled.  Passing make the option
925         prefix=DIRECTORY (and/or exec_prefix=DIRECTORY) overrides the
926         prefix set at configuration time; this may be more convenient
927         than re-running the configure script if you change your mind
928         about the install prefix.
930 --with-readline: This option is no longer supported.  GNU
931         readline is automatically enabled by setup.py when present.
933 --with-threads: On most Unix systems, you can now use multiple
934         threads, and support for this is enabled by default.  To
935         disable this, pass --with-threads=no.  If the library required
936         for threads lives in a peculiar place, you can use
937         --with-thread=DIRECTORY.  IMPORTANT: run "make clean" after
938         changing (either enabling or disabling) this option, or you
939         will get link errors!  Note: for DEC Unix use
940         --with-dec-threads instead.
942 --with-sgi-dl: On SGI IRIX 4, dynamic loading of extension modules is
943         supported by the "dl" library by Jack Jansen, which is
944         ftp'able from ftp://ftp.cwi.nl/pub/dynload/dl-1.6.tar.Z.
945         This is enabled (after you've ftp'ed and compiled the dl
946         library) by passing --with-sgi-dl=DIRECTORY where DIRECTORY
947         is the absolute pathname of the dl library.  (Don't bother on
948         IRIX 5, it already has dynamic linking using SunOS style
949         shared libraries.)  THIS OPTION IS UNSUPPORTED.
951 --with-dl-dld: Dynamic loading of modules is rumored to be supported
952         on some other systems: VAX (Ultrix), Sun3 (SunOS 3.4), Sequent
953         Symmetry (Dynix), and Atari ST.  This is done using a
954         combination of the GNU dynamic loading package
955         (ftp://ftp.cwi.nl/pub/dynload/dl-dld-1.1.tar.Z) and an
956         emulation of the SGI dl library mentioned above (the emulation
957         can be found at
958         ftp://ftp.cwi.nl/pub/dynload/dld-3.2.3.tar.Z).  To
959         enable this, ftp and compile both libraries, then call
960         configure, passing it the option
961         --with-dl-dld=DL_DIRECTORY,DLD_DIRECTORY where DL_DIRECTORY is
962         the absolute pathname of the dl emulation library and
963         DLD_DIRECTORY is the absolute pathname of the GNU dld library.
964         (Don't bother on SunOS 4 or 5, they already have dynamic
965         linking using shared libraries.)  THIS OPTION IS UNSUPPORTED.
967 --with-libm, --with-libc: It is possible to specify alternative
968         versions for the Math library (default -lm) and the C library
969         (default the empty string) using the options
970         --with-libm=STRING and --with-libc=STRING, respectively.  For
971         example, if your system requires that you pass -lc_s to the C
972         compiler to use the shared C library, you can pass
973         --with-libc=-lc_s. These libraries are passed after all other
974         libraries, the C library last.
976 --with-libs='libs': Add 'libs' to the LIBS that the python interpreter
977         is linked against.
979 --with-cxx=<compiler>: Some C++ compilers require that main() is
980         compiled with the C++ if there is any C++ code in the application.
981         Specifically, g++ on a.out systems may require that to support
982         construction of global objects. With this option, the main() function
983         of Python will be compiled with <compiler>; use that only if you
984         plan to use C++ extension modules, and if your compiler requires
985         compilation of main() as a C++ program.
988 --with-pydebug:  Enable additional debugging code to help track down
989         memory management problems.  This allows printing a list of all
990         live objects when the interpreter terminates.
991         
992 --with(out)-universal-newlines: enable reading of text files with
993         foreign newline convention (default: enabled). In other words,
994         any of \r, \n or \r\n is acceptable as end-of-line character.
995         If enabled import and execfile will automatically accept any newline
996         in files. Python code can open a file with open(file, 'U') to
997         read it in universal newline mode. THIS OPTION IS UNSUPPORTED.
1000 Building for multiple architectures (using the VPATH feature)
1001 -------------------------------------------------------------
1003 If your file system is shared between multiple architectures, it
1004 usually is not necessary to make copies of the sources for each
1005 architecture you want to support.  If the make program supports the
1006 VPATH feature, you can create an empty build directory for each
1007 architecture, and in each directory run the configure script (on the
1008 appropriate machine with the appropriate options).  This creates the
1009 necessary subdirectories and the Makefiles therein.  The Makefiles
1010 contain a line VPATH=... which points to a directory containing the
1011 actual sources.  (On SGI systems, use "smake -J1" instead of "make" if
1012 you use VPATH -- don't try gnumake.)
1014 For example, the following is all you need to build a minimal Python
1015 in /usr/tmp/python (assuming ~guido/src/python is the toplevel
1016 directory and you want to build in /usr/tmp/python):
1018         $ mkdir /usr/tmp/python
1019         $ cd /usr/tmp/python
1020         $ ~guido/src/python/configure
1021         [...]
1022         $ make
1023         [...]
1024         $
1026 Note that configure copies the original Setup file to the build
1027 directory if it finds no Setup file there.  This means that you can
1028 edit the Setup file for each architecture independently.  For this
1029 reason, subsequent changes to the original Setup file are not tracked
1030 automatically, as they might overwrite local changes.  To force a copy
1031 of a changed original Setup file, delete the target Setup file.  (The
1032 makesetup script supports multiple input files, so if you want to be
1033 fancy you can change the rules to create an empty Setup.local if it
1034 doesn't exist and run it with arguments $(srcdir)/Setup Setup.local;
1035 however this assumes that you only need to add modules.)
1038 Building on non-UNIX systems
1039 ----------------------------
1041 For Windows (2000/NT/ME/98/95), assuming you have MS VC++ 6.0, the
1042 project files are in PCbuild, the workspace is pcbuild.dsw.  See
1043 PCbuild\readme.txt for detailed instructions.
1045 For other non-Unix Windows compilers, in particular Windows 3.1 and
1046 for OS/2, enter the directory "PC" and read the file "readme.txt".
1048 For the Mac, a separate source distribution will be made available,
1049 for use with the CodeWarrior compiler.  If you are interested in Mac
1050 development, join the PythonMac Special Interest Group
1051 (http://www.python.org/sigs/pythonmac-sig/, or send email to
1052 pythonmac-sig-request@python.org).
1054 Of course, there are also binary distributions available for these
1055 platforms -- see http://www.python.org/.
1057 To port Python to a new non-UNIX system, you will have to fake the
1058 effect of running the configure script manually (for Mac and PC, this
1059 has already been done for you).  A good start is to copy the file
1060 pyconfig.h.in to pyconfig.h and edit the latter to reflect the actual
1061 configuration of your system.  Most symbols must simply be defined as
1062 1 only if the corresponding feature is present and can be left alone
1063 otherwise; however the *_t type symbols must be defined as some
1064 variant of int if they need to be defined at all.
1066 For all platforms, it's important that the build arrange to define the
1067 preprocessor symbol NDEBUG on the compiler command line in a release
1068 build of Python (else assert() calls remain in the code, hurting
1069 release-build performance).  The Unix, Windows and Mac builds already
1070 do this.
1073 Miscellaneous issues
1074 ====================
1076 Emacs mode
1077 ----------
1079 There's an excellent Emacs editing mode for Python code; see the file
1080 Misc/python-mode.el.  Originally written by the famous Tim Peters, it
1081 is now maintained by the equally famous Barry Warsaw (it's no
1082 coincidence that they now both work on the same team).  The latest
1083 version, along with various other contributed Python-related Emacs
1084 goodies, is online at http://www.python.org/emacs/python-mode.  And
1085 if you are planning to edit the Python C code, please pick up the
1086 latest version of CC Mode http://www.python.org/emacs/cc-mode; it
1087 contains a "python" style used throughout most of the Python C source
1088 files.  (Newer versions of Emacs or XEmacs may already come with the
1089 latest version of python-mode.)
1092 Tkinter
1093 -------
1095 The setup.py script automatically configures this when it detects a
1096 usable Tcl/Tk installation.  This requires Tcl/Tk version 8.0 or
1097 higher.
1099 For more Tkinter information, see the Tkinter Resource page:
1100 http://www.python.org/topics/tkinter/
1102 There are demos in the Demo/tkinter directory, in the subdirectories
1103 guido, matt and www (the matt and guido subdirectories have been
1104 overhauled to use more recent Tkinter coding conventions).
1106 Note that there's a Python module called "Tkinter" (capital T) which
1107 lives in Lib/lib-tk/Tkinter.py, and a C module called "_tkinter"
1108 (lower case t and leading underscore) which lives in
1109 Modules/_tkinter.c.  Demos and normal Tk applications import only the
1110 Python Tkinter module -- only the latter imports the C _tkinter
1111 module.  In order to find the C _tkinter module, it must be compiled
1112 and linked into the Python interpreter -- the setup.py script does
1113 this.  In order to find the Python Tkinter module, sys.path must be
1114 set correctly -- normal installation takes care of this.
1117 Distribution structure
1118 ----------------------
1120 Most subdirectories have their own README files.  Most files have
1121 comments.
1123 .cvsignore      Additional filename matching patterns for CVS to ignore
1124 BeOS/           Files specific to the BeOS port
1125 Demo/           Demonstration scripts, modules and programs
1126 Doc/            Documentation sources (LaTeX)
1127 Grammar/        Input for the parser generator
1128 Include/        Public header files
1129 LICENSE         Licensing information
1130 Lib/            Python library modules
1131 Mac/            Macintosh specific resources
1132 Makefile.pre.in Source from which config.status creates the Makefile.pre
1133 Misc/           Miscellaneous useful files
1134 Modules/        Implementation of most built-in modules
1135 Objects/        Implementation of most built-in object types
1136 PC/             Files specific to PC ports (DOS, Windows, OS/2)
1137 PCbuild/        Build directory for Microsoft Visual C++
1138 Parser/         The parser and tokenizer and their input handling
1139 Python/         The byte-compiler and interpreter
1140 README          The file you're reading now
1141 Tools/          Some useful programs written in Python
1142 pyconfig.h.in   Source from which pyconfig.h is created (GNU autoheader output)
1143 configure       Configuration shell script (GNU autoconf output)
1144 configure.in    Configuration specification (input for GNU autoconf)
1145 install-sh      Shell script used to install files
1147 The following files will (may) be created in the toplevel directory by
1148 the configuration and build processes:
1150 Makefile        Build rules
1151 Makefile.pre    Build rules before running Modules/makesetup
1152 buildno         Keeps track of the build number
1153 config.cache    Cache of configuration variables
1154 pyconfig.h      Configuration header
1155 config.log      Log from last configure run
1156 config.status   Status from last run of the configure script
1157 getbuildinfo.o  Object file from Modules/getbuildinfo.c
1158 libpython<version>.a    The library archive
1159 python          The executable interpreter
1160 tags, TAGS      Tags files for vi and Emacs
1163 That's all, folks!
1164 ------------------
1167 --Guido van Rossum (home page: http://www.python.org/~guido/)