#changed all email address to go through python.org
[python/dscho.git] / README
bloba2a337b62a44682d7c8dff39196cb3bdbc99864b
1 This is Python release 1.2
2 ==========================
5 What's new in this release?
6 ---------------------------
8 This version provides new functionality as well as bug fixes, lots of
9 new documentation, and quite a few new library modules.  Everyone
10 should upgrade.  For a full list of what's new and changed, see
11 Misc/NEWS.
14 What is Python anyway?
15 ----------------------
17 Python is an interpreted object-oriented programming language, and is
18 often compared to Tcl, Perl or Scheme.  For a quick summary of what
19 Python can mean for a UNIX/C programmer, read Misc/BLURB.LUTZ.
22 If you don't read instructions
23 ------------------------------
25 Congratulations on getting this far. :-)
27 To start building right away (on UNIX): type "./configure" in the
28 current directory and when it finishes, type "make".  The section
29 Build Instructions below is still recommended reading. :-)
32 Copyright issues
33 ----------------
35 Python is COPYRIGHTED but free to use for all.  See the full copyright
36 notice at the end of this file.
38 The Python distribution is *not* affected by the GNU Public Licence
39 (GPL).  There are interfaces to some GNU code but these are entirely
40 optional and no GNU code is distributed with Python.  For all these
41 packages, GPL-free public domain versions also exist.
45 Build instructions
46 ==================
48 Before you start building Python, you must first configure it.  This
49 entails (at least) running the script "./configure", which figures out
50 your system configuration and creates several Makefiles.  (It takes a
51 minute or two -- please be patient!)  When it's done, you are ready to
52 run make.  Typing "make" in the toplevel directory will recursively
53 run make in each of the subdirectories Parser, Objects, Python and
54 Modules, creating a library file in each one.  The executable of the
55 interpreter is built in the Modules subdirectory and moved up here
56 when it is built.  If you want or need to, you can also chdir into
57 each subdirectory in turn and run make there manually (do the Modules
58 subdirectory last!).
60 NOTE: if you rerun the configure script with different options, remove
61 all object files by running "make clean" before rebuilding.  Believe
62 it or not, "make clean" sometimes helps to clean up other inexplicable
63 problems as well.  Try it before sending in a bug report!
66 Troubleshooting
67 ---------------
69 If you run into trouble, see section 3 of the FAQ (file Misc/FAQ) for
70 hints on what can go wrong, and how to fix it.
73 Platform specific notes
74 -----------------------
76 Linux:  It is possible that "makesetup" fails with an obscure sed
77         error.  This is a bug in bash.  Replace /bin/sh with /bin/ash
78         in both makesetup and Makefile.pre.in.  This has been observed
79         in Slackware version 2.2, bash 1.14.3; Slackware 2.1 did not
80         have the problem.
82 AIX:    Read the file Misc/AIX-NOTES before trying to build.
84 HP-UX:  Read the file Misc/HPUX-NOTES if you want to be able to
85         use shared libraries for dynamically loaded modules.
87 Minix:  When using ack, use "CC=cc AR=aal RANLIB=: ./configure"!
89 SCO:    1) Everything works much better if you add -U__STDC__ to the
90         defs.  This is because all the SCO header files are broken.
91         Anything that isn't mentioned in the C standard it's
92         conditionally excluded when __STDC__ is defined.
94         2) Due to the U.S. export restrictions, SCO broke the crypt
95         stuff out into a separate library, libcrypt_i.a so the LIBS
96         needed be set to:
98                 LIBS=' -lsocket -lcrypt_i'
101 Configuring the set of built-in modules
102 ---------------------------------------
104 You can configure the interpreter to contain fewer or more built-in
105 modules by editing the file Modules/Setup.  This file is initially
106 copied (when the toplevel Makefile makes Modules/Makefile for the
107 first time) from Setup.in; if it does not exist yet, make a copy
108 yourself.  Never edit Setup.in -- always edit Setup.  Read the
109 comments in the file for information on what kind of edits you can
110 make.  When you have edited Setup, Makefile and config.c in Modules
111 will automatically be rebuilt the next time you run make in the
112 toplevel directory.
114 Especially on SGI IRIX, there are modules that interface to many SGI
115 specific system libraries, e.g. the GL library and the audio hardware.
118 Setting the optimization/debugging options
119 ------------------------------------------
121 If you want to change the optimization/debugging options for the C
122 compiler, assign to the OPT variable on the toplevel make command;
123 e.g. "make OPT=-g" will build a debugging version of Python on most
124 platforms.  The default is OPT=-O; a value for OPT in the environment
125 when the configure script is run overrides this default (likewise for
126 CC; and the initial value for LIBS is used as the base set of
127 libraries to link with).
130 Testing
131 -------
133 To test the interpreter that you have just built, type "make test".
134 This runs the test set silently, twice (once with no compiled files,
135 once with the compiled files left by the previous test run).  Each
136 test run should print "All tests OK." and nothing more.  (The test set
137 does not test the built-in modules, but will find most other problems
138 with the interpreter.)
140 IMPORTANT: If the tests fail and you decide to mail a bug report,
141 *don't* include the output of "make test".  It is useless.  Run the
142 following command instead:
144         PYTHONPATH=../Lib:../Lib/test:./Modules ./python -c 'import testall'
146 (substituting the top of the source tree for .. if you built in a
147 different directory).  This gives the output of the tests and shows
148 which test failed.
151 Installing
152 ----------
154 To install the interpreter as /usr/local/bin/python, type "make
155 install".  To install the library as /usr/local/lib/python, type "make
156 libinstall".  To install the manual page as
157 /usr/local/man/man1/python.1, type "make maninstall".  To install the
158 Emacs editing mode for python, manually copy the file
159 Misc/python-mode.el to your local Emacs lisp directory.  The directory
160 /usr/local can be overridden at configuration time by passing
161 --prefix=DIRECTORY to the configure script, or at make time by passing
162 "prefix=DIRECTORY" to make.  See below for more information on --prefix.
164 If you plan to do development of extension modules or to embed Python
165 in another application and don't want to reference the original source
166 tree, you can type "make inclinstall" and "make libainstall" to
167 install the include files and lib*.a files, respectively, as
168 /usr/local/include/Py/*.h and /usr/local/lib/python/lib/lib*.a.  The
169 make libainstall target also installs copies of several other files
170 used or produced during the build process which are needed to build
171 extensions or to generate their Makefiles.
174 Configuration options and variables
175 -----------------------------------
177 Some special cases are handled by passing environment variables or
178 options to the configure script.
180 NOTE: if you rerun the configure script with different options, remove
181 all object files by running "make clean" before rebuilding.
183 --with(out)-gcc: The configure script uses gcc (the GNU C compiler) if
184         it finds it.  If you don't want this, or if this compiler is
185         installed but broken on your platform, pass the option
186         --without-gcc.  You can also pass "CC=cc" (or whatever the
187         name of the proper C compiler is) in the environment, but the
188         advantage of using --without-gcc is that this option is
189         remembered by the config.status script for its --recheck
190         option.
192 --prefix, --exec-prefix: If you want to install the binaries and the
193         Python library somewhere else than in /usr/local/{bin,lib},
194         you can pass the option --prefix=DIRECTORY; the interpreter
195         binary will be installed as DIRECTORY/bin/python and the
196         library files as DIRECTORY/lib/python/*.  If you pass
197         --exec-prefix=DIRECTORY (as well) this overrides the
198         installation prefix for architecture-dependent files (like the
199         interpreter binary).  Note that --prefix=DIRECTORY also
200         affects the default module search path (sys.path), when
201         Modules/config.c is compiled.  Passing make the option
202         prefix=DIRECTORY (and/or exec_prefix=DIRECTORY) overrides the
203         prefix set at configuration time; this may be more convenient
204         than re-running the configure script if you change your mind
205         about the install prefix...
207 --with-readline: You can use the GNU readline library to improve the
208         interactive user interface: this gives you line editing and
209         command history when calling python interactively.  You need
210         to configure build the GNU readline library before running the
211         configure script.  Its sources are not distributed with
212         Python; you can ftp them from any GNU mirror site, or from its
213         home site:
214         <URL:ftp://slc2.ins.cwru.edu/pub/dist/readline-2.0.tar.gz> (or
215         a higher version number -- using version 1.x is not
216         recommended).
218         A GPL-free version was posted to comp.sources.misc in volume
219         31 and is widely available from FTP archive sites, e.g.
220         <URL:ftp://gatekeeper.dec.com/.b/usenet/comp.sources.misc/
221         volume31/editline/part01.Z>
223         Pass the Python configure script the option
224         --with-readline=DIRECTORY where DIRECTORY is the absolute
225         pathname of the directory where you've built the readline
226         library.  Some hints on building and using the readline
227         library are in the FAQ (file Misc/FAQ).
229 --with-thread: On SGI IRIX, and on Sun SOLARIS 2, you can use multiple
230         threads.  To enable this, pass --with-thread.  In the
231         Modules/Setup file, enable the thread module.  (Threads aren't
232         enabled automatically because there are run-time penalties
233         when support for them is compiled in even if you don't use
234         them.)
236 --with-sgi-dl: On SGI IRIX 4, dynamic loading of extension modules is
237         supported by the "dl" library by Jack Jansen, which is
238         ftp'able from <URL:ftp://ftp.cwi.nl/pub/dynload/dl-1.6.tar.Z>.
239         This is enabled (after you've ftp'ed and compiled the dl
240         library!) by passing --with-sgi-dl=DIRECTORY where DIRECTORY
241         is the absolute pathname of the dl library.  (Don't bother on
242         IRIX 5, it already has dynamic linking using SunOS style
243         shared libraries.)  Support for this feature is deprecated.
245 --with-dl-dld: Dynamic loading of modules is rumoured to be supported
246         on some other systems: VAX (Ultrix), Sun3 (SunOS 3.4), Sequent
247         Symmetry (Dynix), and Atari ST.  This is done using a
248         combination of the GNU dynamic loading package
249         (<URL:ftp://ftp.cwi.nl/pub/dynload/dl-dld-1.1.tar.Z>) and an
250         emulation of the SGI dl library mentioned above (the emulation
251         can be found at
252         <URL:ftp://ftp.cwi.nl/pub/dynload/dld-3.2.3.tar.Z>).  To
253         enable this, ftp and compile both libraries, then call the
254         configure passing it the option
255         --with-dl-dld=DL_DIRECTORY,DLD_DIRECTORY where DL_DIRECTORY is
256         the absolute pathname of the dl emulation library and
257         DLD_DIRECTORY is the absolute pathname of the GNU dld library.
258         (Don't bother on SunOS 4 or 5, they already have dynamic
259         linking using shared libraries.)  Support for this feature is
260         deprecated.
262 --with-libm, --with-libc: It is possible to specify alternative
263         versions for the Math library (default -lm) and the C library
264         (default the empty string) using the options
265         --with-libm=STRING and --with-libc=STRING, respectively.  E.g.
266         if your system requires that you pass -lc_s to the C compiler
267         to use the shared C library, you can pass --with-libc=-lc_s.
268         These libraries are passed after all other libraries, the C
269         library last.
272 Extensions
273 ----------
275 You can also build an "extended" interpreter, using modules that are
276 not contained in the Modules directory.  Extensions are distributed as
277 a separate tar file (currently extensions.tar.gz).  See the README
278 file there.
281 Building for multiple architectures (using the VPATH feature)
282 -------------------------------------------------------------
284 If your file system is shared between multiple architectures, it
285 usually is not necessary to make copies of the sources for each
286 architecture you want to support.  If the make program supports the
287 VPATH feature, you can create an empty build directory for each
288 architecture, and in each directory run the configure script (on the
289 appropriate machine with the appropriate options).  This creates the
290 necessary subdirectories and the Makefiles therein.  The Makefiles
291 contain a line VPATH=... which points to directory containing the
292 actual sources.  (On SGI systems, use "smake" instead of "make" if you
293 use VPATH -- don't try gnumake.)
295 For example, the following is all you need to build a minimal Python
296 in /usr/tmp/python (assuming ~guido/src/python is the toplevel
297 directory and you want to build in /usr/tmp/python):
299         $ mkdir /usr/tmp/python
300         $ cd /usr/tmp/python
301         $ ~guido/src/python/configure
302         [...]
303         $ make
304         [...]
305         $
307 Note that Modules/Makefile copies the original Setup file to the build
308 directory if it finds no Setup file there.  This means that you can
309 edit the Setup file for each architecture independently.  For this
310 reason, subsequent changes to the original Setup file are not tracked
311 automatically, as they might overwrite local changes.  To force a copy
312 of a changed original Setup file, delete the target Setup file.  (The
313 makesetup script supports multiple input files, so if you want to be
314 fancy you can change the rules to create an empty Setup.local if it
315 doesn't exist and run it with arguments $(srcdir)/Setup Setup.local;
316 however this assumes that you only need to add modules.)
319 Building on non-UNIX systems
320 ----------------------------
322 On non-UNIX systems, you will have to fake the effect of running the
323 configure script manually.  A good start is to copy the file
324 config.h.in to config.h and edit the latter to reflect the actual
325 configuration of your system.  Most symbols must simply be defined as
326 1 only if the corresponding feature is present and can be left alone
327 otherwise; however RETSIGTYPE must always be defined, either as int or
328 as void, and the *_t type symbols must be defined as some variant of
329 int if they need to be defined at all. Then arrange that the symbol
330 HAVE_CONFIG_H is defined during compilation (usually by passing an
331 argument of the form `-DHAVE_CONFIG_H' to the compiler, but this is
332 necessarily system-dependent).
334 I have tried to collect instructions, Makefiles and additional sources
335 for various platforms in this release.  The following directories
336 exist:
338 Mac/            Apple Macintosh, using THINK C 6.0 or MPW 3.2.
339 Dos/            MS-DOS and Windows 3.1, using Microsoft C.
340 Nt/             Windows NT, using Microsoft Visual C/C++.
341 Os2/            OS/2.
343 Most of these instructions were last tested with a previous Python
344 release, so you may still experience occasional problems.  If you have
345 fixes or suggestions, please let me know and I'll try to incorporate
346 them in the next release.
350 Miscellaneous issues
351 ====================
354 Documentation
355 -------------
357 All documentation is provided in the subdirectory Doc in the form of
358 LaTeX files.  In order of importance for new users: Tutorial (tut),
359 Library Reference (lib), Language Reference (ref), Extending (ext).
360 Especially the Library Reference is of immense value since much of
361 Python's power (including the built-in data types and functions!) is
362 described here.
364 To print the documentation from the LaTeX files, chdir into the Doc
365 subdirectory, type "make" (let's hope you have LaTeX installed!), and
366 send the four resulting PostScript files (tut.ps, lib.ps, ref.ps, and
367 ext.ps) to the printer.  See the README file there.
369 All documentation is also available on-line via the World-Wide Web
370 (WWW): <URL:http://www.cwi.nl/~guido/Python.html>.  It can also be
371 downloaded separately from the ftp archives (see below) in Emacs INFO,
372 HTML or PostScript form -- see the FAQ (file Misc/FAQ) for more info.
375 Emacs mode
376 ----------
378 There's an excellent Emacs editing mode for Python code; see the file
379 Misc/python-mode.el.  Originally written by Tim Peters, who's no
380 longer on the net, it is now maintained by Barry Warsaw
381 <bwarsaw@cnri.reston.va.com>.
383 BTW, if you want to use font-lock for Python sources, here's something
384 to put in your .emacs file:
386         (defun my-python-mode-hook ()
387           (setq font-lock-keywords python-font-lock-keywords)
388           (font-lock-mode 1))
389         (add-hook 'python-mode-hook 'my-python-mode-hook)
393 Bug reports
394 -----------
396 Bugs are best reported to the comp.lang.python newsgroup or the Python
397 mailing list -- see the section "Newsgroup and mailing list" below.
398 Before posting, read the FAQ (file Misc/FAQ) first to see if your
399 problem has already been answered!
402 Ftp access
403 ----------
405 Python's "home ftp site" is ftp.cwi.nl, directory pub/python.  See the
406 FAQ (file Misc/FAQ) for a list of other ftp sites carrying the Python
407 distribution.
410 Newsgroup and mailing list
411 --------------------------
413 There are a newsgroup and a mailing list devoted to Python
414 programming, design and bugs.  The newsgroup, comp.lang.python,
415 contains exactly the same messages as the mailing list.  To subscribe
416 to the mailing list, send mail containing your real name and e-mail
417 address to "python-list-request@cwi.nl" (a real person reads these
418 messages, so no LISTPROC or Majordomo commands, please).
421 The Tk interface
422 ----------------
424 Tk (the user interface component of John Ousterhout's Tcl language) is
425 also usable from Python.  Since this requires that you first build and
426 install Tcl/Tk, the Tk interface is not enabled by default.  It
427 requires Tcl 7.3 and Tk 3.6.  It doesn't work yet with Tk 4.0-beta!
428 (Actually, the C code does, but the Tkinter.py module hasn't been
429 adapted yet.)  For more info about Tk, including pointers to the
430 source, see John Ousterhout's home page at
431 <URL:http://playground.sun.com/~ouster/>.
433 To enable the Python/Tk interface, once you've built and installed
434 Tcl/Tk, all you need to do is edit two lines in Modules/Setup; search
435 for the string "tkinter".  Un-comment one (normally the first) of the
436 lines beginning with "#tkinter" and un-comment the line beginning with
437 "#TKPATH".  (If you have installed Tcl/Tk in unusual places you will
438 have to edit the first line as well to fix the -I and -L options.)
439 See the Build Instructions above for more details.
441 There is little documentation.  Begin with fetching the "Tk Lifesaver"
442 document, e.g. <URL:ftp://ftp.cwi.nl/pub/python/doc/tkinter-doc.tar.gz>
443 (a gzipped tar file containing a PostScript file).  There are demos in
444 the Demo/tkinter directory, in the subdirectories guido, matt and www.
446 Note that there's a Python module called "Tkinter" (capital T) which
447 lives in Lib/tkinter/Tkinter.py, and a C module called "tkinter"
448 (lower case t) which lives in Modules/tkintermodule.c.  Demos and
449 normal Tk applications only import the Python Tkinter module -- only
450 the latter uses the C tkinter module directly.  In order to find the C
451 tkinter module, it must be compiled and linked into the Python
452 interpreter -- the tkinter line in the Setup file does this.  In order
453 to find the Python Tkinter module, sys.path must be set correctly --
454 the TKPATH assignment in the Setup file takes care of this, but only
455 if you install Python properly ("make install libinstall").  (You can
456 also use dynamic loading for the C tkinter module, in which case you
457 must manually fix up sys.path or set $PYTHONPATH for the Python
458 Tkinter module.)
461 Distribution structure
462 ----------------------
464 Most subdirectories have their own README file.  Most files have
465 comments.
467 ChangeLog       A raw list of changes since the first 1.0.0 BETA release
468 Contrib/        Interesting or useful Python code contributed by others
469 Demo/           Demonstration scripts, modules and programs
470 Doc/            Documentation (LaTeX sources)
471 Extensions/     Extension modules (distributed separately)
472 Grammar/        Input for the parser generator
473 Include/        Public header files
474 Lib/            Python library modules
475 Makefile.in     Source from which config.status creates Makefile
476 Misc/           Miscellaneous files
477 Modules/        Implementation of most built-in modules
478 Objects/        Implementation of most built-in object types
479 Parser/         The parser and tokenizer and their input handling
480 Python/         The "compiler" and interpreter
481 README          The file you're reading now
482 Tools/          Some useful programs written in Python
483 acconfig.h      Additional input for the autoheader program
484 config.h.in     Source from which config.status creates config.h
485 configure       Configuration shell script (GNU autoconf output)
486 configure.in    Configuration specification (GNU autoconf input)
488 The following files will (may) be created in the toplevel directory by
489 the configuration and build processes:
491 Makefile        Build rules
492 config.cache    cache of configuration variables
493 config.h        Configuration header
494 config.log      log from last configure run
495 config.status   status from last run of configure script
496 python          The executable interpreter
497 tags, TAGS      Tags files for vi and Emacs
500 Author's address
501 ----------------
503 Guido van Rossum
504 CWI, dept. CST
505 P.O. Box 94079
506 1090 GB  Amsterdam
507 The Netherlands
509 E-mail: guido@cwi.nl
513 Copyright notice
514 ================
516 The Python source is copyrighted, but you can freely use and copy it
517 as long as you don't change or remove the copyright notice:
519 ----------------------------------------------------------------------
520 Copyright 1991-1995 by Stichting Mathematisch Centrum, Amsterdam,
521 The Netherlands.
523                         All Rights Reserved
525 Permission to use, copy, modify, and distribute this software and its
526 documentation for any purpose and without fee is hereby granted,
527 provided that the above copyright notice appear in all copies and that
528 both that copyright notice and this permission notice appear in
529 supporting documentation, and that the names of Stichting Mathematisch
530 Centrum or CWI not be used in advertising or publicity pertaining to
531 distribution of the software without specific, written prior permission.
533 STICHTING MATHEMATISCH CENTRUM DISCLAIMS ALL WARRANTIES WITH REGARD TO
534 THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
535 FITNESS, IN NO EVENT SHALL STICHTING MATHEMATISCH CENTRUM BE LIABLE
536 FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
537 WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
538 ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
539 OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
540 ----------------------------------------------------------------------
543 --Guido van Rossum, CWI, Amsterdam <mailto:guido@cwi.nl>
544 <http://www.cwi.nl/~guido/>