blob: 677d646606760b011764119b46653da6ae70bb6a [file] [log] [blame]
Guido van Rossuma7925f11994-01-26 10:20:16 +00001Subject: FAQ: Python -- an object-oriented language
Guido van Rossum5333c5d1994-04-11 11:06:22 +00002Newsgroups: comp.lang.python,comp.answers,news.answers
3Followup-to: comp.lang.python
Guido van Rossum81300541996-09-06 16:37:56 +00004From: guido@cnri.reston.va.us (Guido van Rossum)
Guido van Rossum7be34a81995-05-31 15:17:12 +00005Reply-to: guido@cnri.reston.va.us (Guido van Rossum)
Guido van Rossumc458e941996-09-11 15:43:13 +00006Expires: Sun, 1 Dec 1996 00:00:00 GMT
7Supersedes: <DxJ3t1.CJv@cwi.nl>
Guido van Rossuma7925f11994-01-26 10:20:16 +00008Approved: news-answers-request@MIT.Edu
9
10Archive-name: python-faq/part1
Guido van Rossum81300541996-09-06 16:37:56 +000011Submitted-by: Guido van Rossum <guido@cnri.reston.va.us>
Guido van Rossumc458e941996-09-11 15:43:13 +000012Version: $Revision$
13Last-modified: 11 September 1996
Guido van Rossuma7925f11994-01-26 10:20:16 +000014
15This article contains answers to Frequently Asked Questions about
16Python (an object-oriented interpreted programming language -- see
17the answer to question 1.1 for a short overview).
18
Guido van Rossumc458e941996-09-11 15:43:13 +000019Copyright 1993-1996 Guido van Rossum. Unchanged electronic
Guido van Rossuma7925f11994-01-26 10:20:16 +000020redistribution of this FAQ is allowed. Printed redistribution only
21with permission of the author. No warranties.
22
23Author's address:
Guido van Rossume7d92d51995-10-11 18:06:54 +000024 Guido van Rossum
25 C.N.R.I.
26 1895 Preston White Drive
Guido van Rossum81300541996-09-06 16:37:56 +000027 Reston, VA 20191
Guido van Rossume7d92d51995-10-11 18:06:54 +000028 U.S.A.
Guido van Rossum81300541996-09-06 16:37:56 +000029Email: <guido@python.org>, <guido@cnri.reston.va.us>
Guido van Rossuma7925f11994-01-26 10:20:16 +000030
31The latest version of this FAQ is available by anonymous ftp from
Guido van Rossumca318ec1996-06-26 19:50:09 +000032<URL:ftp://ftp.python.org/pub/python/doc/FAQ>. It will also be posted
Guido van Rossuma6c707c1995-01-02 17:32:28 +000033regularly to the newsgroups comp.answers <URL:news:comp.answers> and
34comp.lang.python <URL:news:comp.lang.python>.
Guido van Rossuma7925f11994-01-26 10:20:16 +000035
Guido van Rossuma6c707c1995-01-02 17:32:28 +000036Many FAQs, including this one, are available by anonymous ftp
37<URL:ftp://rtfm.mit.edu/pub/usenet/news.answers/>. The name under
38which a FAQ is archived appears in the Archive-name line at the top of
39the article. This FAQ is archived as python-faq/part1
40<URL:ftp://rtfm.mit.edu/pub/usenet/news.answers/python-faq/part1>.
Guido van Rossuma7925f11994-01-26 10:20:16 +000041
42There's a mail server on that machine which will send you files from
43the archive by e-mail if you have no ftp access. You send a e-mail
Guido van Rossuma6c707c1995-01-02 17:32:28 +000044message to <mail-server@rtfm.mit.edu> containing the single word help
45in the message body to receive instructions.
Guido van Rossuma7925f11994-01-26 10:20:16 +000046
47This FAQ is divided in the following chapters:
48
49 1. General information and availability
50 2. Python in the real world
Guido van Rossumb0a2ce51995-08-28 19:41:35 +000051 3. Building Python and Other Known Bugs
Guido van Rossuma7925f11994-01-26 10:20:16 +000052 4. Programming in Python
53 5. Extending Python
54 6. Python's design
55 7. Using Python on non-UNIX platforms
56
57To find the start of a particular chapter, search for the chapter number
58followed by a dot and a space at the beginning of a line (e.g. to
59find chapter 4 in vi, type /^4\. /).
60
61Here's an overview of the questions per chapter:
62
63 1. General information and availability
64 1.1. Q. What is Python?
65 1.2. Q. Why is it called Python?
66 1.3. Q. How do I obtain a copy of the Python source?
67 1.4. Q. How do I get documentation on Python?
Guido van Rossumc50158e1994-05-31 09:18:50 +000068 1.5. Q. Are there other ftp sites that mirror the Python distribution?
69 1.6. Q. Is there a newsgroup or mailing list devoted to Python?
Guido van Rossuma6c707c1995-01-02 17:32:28 +000070 1.7. Q. Is there a WWW page devoted to Python?
Guido van Rossuma8a8d4a1995-03-10 16:19:31 +000071 1.8. Q. Is the Python documentation available on the WWW?
72 1.9. Q. Is there a book on Python, or will there be one out soon?
73 1.10. Q. Are there any published articles about Python that I can quote?
74 1.11. Q. Are there short introductory papers or talks on Python?
75 1.12. Q. How does the Python version numbering scheme work?
76 1.13. Q. How do I get a beta test version of Python?
Guido van Rossum05151e01995-09-28 13:24:46 +000077 1.14. Q. Are there copyright restrictions on the use of Python?
78 1.15. Q. Why was Python created in the first place?
Guido van Rossuma7925f11994-01-26 10:20:16 +000079
80 2. Python in the real world
81 2.1. Q. How many people are using Python?
82 2.2. Q. Have any significant projects been done in Python?
83 2.3. Q. Are there any commercial projects going on using Python?
Guido van Rossum95f61a71994-01-26 17:23:37 +000084 2.4. Q. How stable is Python?
Guido van Rossum8727df41996-09-09 15:16:39 +000085 2.5. Q. What new developments are expected for Python in the future?
86 2.6. Q. Is it reasonable to propose incompatible changes to Python?
87 2.7. Q. What is the future of Python?
88 2.8. Q. What is the PSA, anyway?
89 2.9. Q. How do I join the PSA?
90 2.10. Q. What are the benefits of joining the PSA?
Guido van Rossuma7925f11994-01-26 10:20:16 +000091
Guido van Rossumb0a2ce51995-08-28 19:41:35 +000092 3. Building Python and Other Known Bugs
Guido van Rossum91f60831994-02-15 15:52:27 +000093 3.1. Q. Is there a test set?
94 3.2. Q. When running the test set, I get complaints about floating point
Guido van Rossuma7925f11994-01-26 10:20:16 +000095 operations, but when playing with floating point operations I cannot
96 find anything wrong with them.
Guido van Rossum7be34a81995-05-31 15:17:12 +000097 3.3. Q. Link errors after rerunning the configure script.
98 3.4. Q. The python interpreter complains about options passed to a
Guido van Rossum24349991994-02-02 14:12:45 +000099 script (after the script name).
Guido van Rossum7be34a81995-05-31 15:17:12 +0000100 3.5. Q. When building on the SGI, make tries to run python to create
Guido van Rossum5333c5d1994-04-11 11:06:22 +0000101 glmodule.c, but python hasn't been built or installed yet.
Guido van Rossum8727df41996-09-09 15:16:39 +0000102 3.6. Q. I use VPATH but some targets are built in the source directory.
103 3.7. Q. Trouble building or linking with the GNU readline library.
104 3.8. Q. Trouble with socket I/O on older Linux 1.x versions.
105 3.9. Q. Trouble with prototypes on Ultrix.
106 3.10. Q. Trouble with posix.listdir on NeXTSTEP 3.2.
107 3.11. Q. Other trouble building Python on platform X.
108 3.12. Q. How to configure dynamic loading on Linux.
109 3.13. Q. Errors when linking with a shared library containing C++ code.
110 3.14. Q. I built with tkintermodule.c enabled but get "Tkinter not found".
111 3.15. Q. I built with Tk 4.0 but Tkinter complains about the Tk version.
112 3.16. Q. Link errors for Tcl/Tk symbols when linking with Tcl/Tk.
113 3.17. Q. I configured and built Python for Tcl/Tk but "import Tkinter"
114 fails.
115 3.18. Q. Tk doesn't work right on DEC Alpha.
116 3.19. Q. Several common system calls are missing from the posix module.
117 3.20. Q. ImportError: No module named string, on MS Windows.
118 3.21. Q. Core dump on SGI when using the gl module.
Guido van Rossuma7925f11994-01-26 10:20:16 +0000119
120 4. Programming in Python
Guido van Rossum24349991994-02-02 14:12:45 +0000121 4.1. Q. Is there a source code level debugger with breakpoints, step,
122 etc.?
123 4.2. Q. Can I create an object class with some methods implemented in
Guido van Rossuma7925f11994-01-26 10:20:16 +0000124 C and others in Python (e.g. through inheritance)? (Also phrased as:
125 Can I use a built-in type as base class?)
Guido van Rossum24349991994-02-02 14:12:45 +0000126 4.3. Q. Is there a curses/termcap package for Python?
127 4.4. Q. Is there an equivalent to C's onexit() in Python?
128 4.5. Q. When I define a function nested inside another function, the
Guido van Rossuma7925f11994-01-26 10:20:16 +0000129 nested function seemingly can't access the local variables of the
130 outer function. What is going on? How do I pass local data to a
131 nested function?
Guido van Rossum24349991994-02-02 14:12:45 +0000132 4.6. Q. How do I iterate over a sequence in reverse order?
133 4.7. Q. My program is too slow. How do I speed it up?
134 4.8. Q. When I have imported a module, then edit it, and import it
Guido van Rossuma7925f11994-01-26 10:20:16 +0000135 again (into the same Python process), the changes don't seem to take
136 place. What is going on?
Guido van Rossumb34e8aa1994-09-23 14:20:38 +0000137 4.9. Q. How do I find the current module name?
Guido van Rossuma6c707c1995-01-02 17:32:28 +0000138 4.10. Q. I have a module in which I want to execute some extra code
139 when it is run as a script. How do I find out whether I am running as
140 a script?
141 4.11. Q. I try to run a program from the Demo directory but it fails
142 with ImportError: No module named ...; what gives?
Guido van Rossum061f1821994-10-06 16:03:45 +0000143 4.12. Q. I have successfully built Python with STDWIN but it can't
144 find some modules (e.g. stdwinevents).
Guido van Rossumb34e8aa1994-09-23 14:20:38 +0000145 4.13. Q. What GUI toolkits exist for Python?
Guido van Rossum061f1821994-10-06 16:03:45 +0000146 4.14. Q. Are there any interfaces to database packages in Python?
Guido van Rossumb34e8aa1994-09-23 14:20:38 +0000147 4.15. Q. Is it possible to write obfuscated one-liners in Python?
148 4.16. Q. Is there an equivalent of C's "?:" ternary operator?
149 4.17. Q. My class defines __del__ but it is not called when I delete the
150 object.
Guido van Rossuma6c707c1995-01-02 17:32:28 +0000151 4.18. Q. How do I change the shell environment for programs called
152 using os.popen() or os.system()? Changing os.environ doesn't work.
Guido van Rossumb34e8aa1994-09-23 14:20:38 +0000153 4.19. Q. What is a class?
154 4.20. Q. What is a method?
155 4.21. Q. What is self?
156 4.22. Q. What is a unbound method?
Guido van Rossuma6c707c1995-01-02 17:32:28 +0000157 4.23. Q. How do I call a method defined in a base class from a derived
158 class that overrides it?
159 4.24. Q. How do I call a method from a base class without using the
160 name of the base class?
Guido van Rossumb34e8aa1994-09-23 14:20:38 +0000161 4.25. Q. How can I organize my code to make it easier to change the base
162 class?
163 4.26. Q. How can I find the methods or attributes of an object?
Guido van Rossum061f1821994-10-06 16:03:45 +0000164 4.27. Q. I can't seem to use os.read() on a pipe created with os.popen().
165 4.28. Q. How can I create a stand-alone binary from a Python script?
Guido van Rossum7be34a81995-05-31 15:17:12 +0000166 4.29. Q. What WWW tools are there for Python?
167 4.30. Q. How do I run a subprocess with pipes connected to both input
Guido van Rossum796b2591995-01-20 23:05:52 +0000168 and output?
Guido van Rossum7be34a81995-05-31 15:17:12 +0000169 4.31. Q. How do I call a function if I have the arguments in a tuple?
170 4.32. Q. How do I enable font-lock-mode for Python in Emacs?
171 4.33. Q. Is there an inverse to the format operator (a la C's scanf())?
Guido van Rossumca318ec1996-06-26 19:50:09 +0000172 4.34. Q. Can I have Tk events handled while waiting for I/O?
173 4.35. Q. How do I write a function with output parameters (call by reference)?
Guido van Rossum0d20cfa1996-07-30 18:53:05 +0000174 4.36. Q. Please explain the rules for local and global variables in Python.
175 4.37. Q. How can I have modules that mutually import each other?
Guido van Rossum8727df41996-09-09 15:16:39 +0000176 4.38. Q. How do I copy an object in Python?
177 4.39. Q. How to implement persistent objects in Python? (Persistent ==
178 automatically saved to and restored from disk.)
Guido van Rossuma7925f11994-01-26 10:20:16 +0000179
180 5. Extending Python
181 5.1. Q. Can I create my own functions in C?
182 5.2. Q. Can I create my own functions in C++?
Guido van Rossum7ce61c11994-06-13 15:13:56 +0000183 5.3. Q. How can I execute arbitrary Python statements from C?
184 5.4. Q. How can I evaluate an arbitrary Python expression from C?
185 5.5. Q. How do I extract C values from a Python object?
186 5.6. Q. How do I use mkvalue() to create a tuple of arbitrary length?
Guido van Rossum8727df41996-09-09 15:16:39 +0000187 5.7. Q. How do I call an object's method from C?
188 5.8. Q. How do I catch the output from print_error()?
189 5.9. Q. How do I access a module written in Python from C?
190 5.10. Q. How do I interface to C++ objects from Python?
Guido van Rossuma7925f11994-01-26 10:20:16 +0000191
192 6. Python's design
Guido van Rossum8727df41996-09-09 15:16:39 +0000193 6.1. Q. Why isn't there a switch or case statement in Python?
194 6.2. Q. Why does Python use indentation for grouping of statements?
195 6.3. Q. Why are Python strings immutable?
196 6.4. Q. Why don't strings have methods like index() or sort(), like
Guido van Rossum3de27361994-07-25 14:19:33 +0000197 lists?
Guido van Rossum8727df41996-09-09 15:16:39 +0000198 6.5. Q. Why does Python use methods for some functionality
Guido van Rossum3de27361994-07-25 14:19:33 +0000199 (e.g. list.index()) but functions for other (e.g. len(list))?
Guido van Rossum8727df41996-09-09 15:16:39 +0000200 6.6. Q. Why can't I derive a class from built-in types (e.g. lists or
Guido van Rossum3de27361994-07-25 14:19:33 +0000201 files)?
Guido van Rossum8727df41996-09-09 15:16:39 +0000202 6.7. Q. Why must 'self' be declared and used explicitly in method
Guido van Rossum3de27361994-07-25 14:19:33 +0000203 definitions and calls?
Guido van Rossum8727df41996-09-09 15:16:39 +0000204 6.8. Q. Can't you emulate threads in the interpreter instead of
205 relying on an OS-specific thread implementation?
206 6.9. Q. Why can't lambda forms contain statements?
207 6.10. Q. Why don't lambdas have access to variables defined in the
208 containing scope?
209 6.11. Q. Why can't recursive functions be defined inside other functions?
Guido van Rossum061f1821994-10-06 16:03:45 +0000210 6.12. Q. Why is there no more efficient way of iterating over a dictionary
211 than first constructing the list of keys()?
Guido van Rossumb0a2ce51995-08-28 19:41:35 +0000212 6.13. Q. Can Python be compiled to machine code, C or some other language?
Guido van Rossum05151e01995-09-28 13:24:46 +0000213 6.14. Q. Why doesn't Python use proper garbage collection?
Guido van Rossuma7925f11994-01-26 10:20:16 +0000214
215 7. Using Python on non-UNIX platforms
Guido van Rossum91f60831994-02-15 15:52:27 +0000216 7.1. Q. Is there a Mac version of Python?
Guido van Rossumc458e941996-09-11 15:43:13 +0000217 7.2. Q. Are there DOS and Windows versions of Python?
218 7.3. Q. Is there an OS/2 version of Python?
219 7.4. Q. Is there a VMS version of Python?
220 7.5. Q. What about IBM mainframes, or other non-UNIX platforms?
221 7.6. Q. Where are the source or Makefiles for the non-UNIX versions?
222 7.7. Q. What is the status and support for the non-UNIX versions?
223 7.8. Q. I have a PC version but it appears to be only a binary.
224 Where's the library?
225 7.9. Q. Where's the documentation for the Mac or PC version?
226 7.10. Q. The Mac (PC) version doesn't seem to have any facilities for
Guido van Rossumb34e8aa1994-09-23 14:20:38 +0000227 creating or editing programs apart from entering it interactively, and
228 there seems to be no way to save code that was entered interactively.
229 How do I create a Python program on the Mac (PC)?
Guido van Rossuma7925f11994-01-26 10:20:16 +0000230
231To find a particular question, search for the question number followed
232by a dot, a space, and a Q at the beginning of a line (e.g. to find
233question 4.2 in vi, type /^4\.2\. Q/).
234
235
2361. General information and availability
Guido van Rossumb0a2ce51995-08-28 19:41:35 +0000237 =======================================
Guido van Rossuma7925f11994-01-26 10:20:16 +0000238
2391.1. Q. What is Python?
240
241A. Python is an interpreted, interactive, object-oriented programming
242language. It incorporates modules, exceptions, dynamic typing, very
243high level dynamic data types, and classes. Python combines
244remarkable power with very clear syntax. It has interfaces to many
245system calls and libraries, as well as to various window systems, and
246is extensible in C or C++. It is also usable as an extension language
247for applications that need a programmable interface. Finally, Python
Guido van Rossuma6c707c1995-01-02 17:32:28 +0000248is portable: it runs on many brands of UNIX, on the Mac, and on PCs
249under MS-DOS, Windows, Windows NT, and OS/2.
Guido van Rossuma7925f11994-01-26 10:20:16 +0000250
251To find out more, the best thing to do is to start reading the
252tutorial from the documentation set (see a few questions further
253down).
254
2551.2. Q. Why is it called Python?
256
Guido van Rossum796b2591995-01-20 23:05:52 +0000257A. Apart from being a computer scientist, I'm also a fan of "Monty
Guido van Rossuma7925f11994-01-26 10:20:16 +0000258Python's Flying Circus" (a BBC comedy series from the seventies, in
Guido van Rossum5333c5d1994-04-11 11:06:22 +0000259the -- unlikely -- case you didn't know). It occurred to me one day
260that I needed a name that was short, unique, and slightly mysterious.
261And I happened to be reading some scripts from the series at the
262time... So then I decided to call my language Python. But Python is
263not a joke. And don't you associate it with dangerous reptiles
Guido van Rossuma6c707c1995-01-02 17:32:28 +0000264either! (If you need an icon, use an image of the 16-ton weight from
265the TV series or of a can of SPAM :-)
Guido van Rossuma7925f11994-01-26 10:20:16 +0000266
2671.3. Q. How do I obtain a copy of the Python source?
268
Guido van Rossuma6c707c1995-01-02 17:32:28 +0000269A. The latest complete Python source distribution is always available
270by anonymous ftp, e.g.
Guido van Rossum8727df41996-09-09 15:16:39 +0000271<URL:ftp://ftp.python.org/pub/python/src/python1.3.tar.gz>. It is a
Guido van Rossume530c581995-04-10 12:32:16 +0000272gzipped tar file containing the complete C source, LaTeX
273documentation, Python library modules, example programs, and several
274useful pieces of freely distributable software. This will compile and
275run out of the box on most UNIX platforms. (See section 7 for
276non-UNIX information.)
Guido van Rossuma6c707c1995-01-02 17:32:28 +0000277
Guido van Rossum8727df41996-09-09 15:16:39 +0000278Sometimes beta versions of a newer release are available; check the
279subdirectory "beta" of the above-mentioned URL (i.e.
280<URL:ftp://ftp.python.org/pub/python/src/beta/>). (At the time of
281writing, beta3 for Python 1.4 is available there, and should be
282checked before reporting problems with version 1.3.)
283
Guido van Rossuma6c707c1995-01-02 17:32:28 +0000284Occasionally a set of patches is issued which has to be applied using
285the patch program. These patches are placed in the same directory,
Guido van Rossum7be34a81995-05-31 15:17:12 +0000286e.g. <URL:ftp://ftp.python.org/pub/python/src/patch1.1.1>. (At the time
Guido van Rossum8727df41996-09-09 15:16:39 +0000287of writing, no patches exist.)
Guido van Rossuma6c707c1995-01-02 17:32:28 +0000288
289An index of said ftp directory can be found in the file INDEX. An
290HTML version of the index can be found in the file index.html,
Guido van Rossum7be34a81995-05-31 15:17:12 +0000291<URL:ftp://ftp.python.org/pub/python/index.html>.
Guido van Rossuma7925f11994-01-26 10:20:16 +0000292
2931.4. Q. How do I get documentation on Python?
294
Guido van Rossuma8a8d4a1995-03-10 16:19:31 +0000295A. The LaTeX source for the documentation is part of the source
296distribution. If you don't have LaTeX, the latest Python
297documentation set is always available by anonymous ftp, e.g.
Guido van Rossum7be34a81995-05-31 15:17:12 +0000298<URL:ftp://ftp.python.org/pub/python/doc/postscript.tar.gz>. It is a
Guido van Rossuma6c707c1995-01-02 17:32:28 +0000299gzipped tar file containing PostScript files of the reference manual,
Guido van Rossum3de27361994-07-25 14:19:33 +0000300the library manual, and the tutorial. Note that the library manual is
301the most important one of the set, as much of Python's power stems
302from the standard or built-in types, functions and modules, all of
303which are described here. PostScript for a high-level description of
Guido van Rossuma8a8d4a1995-03-10 16:19:31 +0000304Python is in the file nluug-paper.ps (a separate file on the ftp
305site).
Guido van Rossuma7925f11994-01-26 10:20:16 +0000306
Guido van Rossumc50158e1994-05-31 09:18:50 +00003071.5. Q. Are there other ftp sites that mirror the Python distribution?
308
Guido van Rossuma6c707c1995-01-02 17:32:28 +0000309A. The following anonymous ftp sites keep mirrors of the Python
310distribution:
Guido van Rossuma7925f11994-01-26 10:20:16 +0000311
Guido van Rossume7d92d51995-10-11 18:06:54 +0000312USA:
313
314 <URL:ftp://ftp.python.org/pub/python/>
Guido van Rossuma6c707c1995-01-02 17:32:28 +0000315 <URL:ftp://gatekeeper.dec.com/pub/plan/python/>
Guido van Rossume7d92d51995-10-11 18:06:54 +0000316 <URL:ftp://ftp.uu.net/languages/python/>
Guido van Rossuma6c707c1995-01-02 17:32:28 +0000317 <URL:ftp://ftp.wustl.edu/graphics/graphics/sgi-stuff/python/>
Guido van Rossume7d92d51995-10-11 18:06:54 +0000318 <URL:ftp://ftp.sterling.com/programming/languages/python/>
319 <URL:ftp://uiarchive.cso.uiuc.edu/pub/lang/python/>
320 <URL:ftp://ftp.pht.com/mirrors/python/python/>
321
322Europe:
323
324 <URL:ftp://ftp.cwi.nl/pub/python/>
Guido van Rossuma6c707c1995-01-02 17:32:28 +0000325 <URL:ftp://ftp.funet.fi/pub/languages/python/>
326 <URL:ftp://ftp.sunet.se/pub/lang/python/>
Guido van Rossum3fc9d731995-07-25 15:10:56 +0000327 <URL:ftp://unix.hensa.ac.uk/mirrors/uunet/languages/python/>
Guido van Rossumb0a2ce51995-08-28 19:41:35 +0000328 <URL:ftp://ftp.ibp.fr/pub/python/>
Guido van Rossum3fc9d731995-07-25 15:10:56 +0000329 <URL:ftp://ftp.switch.ch/software/sources/python/>
330 <URL:ftp://ftp.informatik.tu-muenchen.de/pub/comp/programming/languages/python/>
Guido van Rossuma7925f11994-01-26 10:20:16 +0000331
Guido van Rossume7d92d51995-10-11 18:06:54 +0000332Australia:
333
334 <URL:ftp://ftp.dstc.edu.au/pub/python/>
335
Guido van Rossuma6c707c1995-01-02 17:32:28 +0000336Or try archie on the string "python".
Guido van Rossuma7925f11994-01-26 10:20:16 +0000337
Guido van Rossumc50158e1994-05-31 09:18:50 +00003381.6. Q. Is there a newsgroup or mailing list devoted to Python?
Guido van Rossuma7925f11994-01-26 10:20:16 +0000339
Guido van Rossuma6c707c1995-01-02 17:32:28 +0000340A. There is a newsgroup, comp.lang.python <URL:news:comp.lang.python>,
341and a mailing list. The newsgroup and mailing list are gatewayed into
342each other -- if you can read news it's unnecessary to subscribe to
343the mailing list. Send e-mail to <python-list-request@cwi.nl> to
Guido van Rossume530c581995-04-10 12:32:16 +0000344(un)subscribe to the mailing list. Hypermail archives of (nearly)
345everything posted to the mailing list (and thus the newsgroup) are
346available on our WWW server,
Guido van Rossuma6c707c1995-01-02 17:32:28 +0000347<URL:http://www.cwi.nl/~guido/hypermail/index.html>. The raw archives
348are also available by ftp, e.g.
Guido van Rossum7be34a81995-05-31 15:17:12 +0000349<URL:ftp://ftp.python.org/pub/python/mail/mailinglist.gz>. The
Guido van Rossume530c581995-04-10 12:32:16 +0000350uncompressed versions of these files can be read with the standard
351UNIX Mail program ("Mail -f file") or with nn ("nn file"). To read
Guido van Rossumbf8e7d51995-08-28 03:09:13 +0000352them using MH, you could use "inc -file file". (The archival service
353has stopped archiving new articles around the end of April 1995. I
354hope to revive it on the PSA server www.python.org sometime in the
355future.)
Guido van Rossuma7925f11994-01-26 10:20:16 +0000356
Guido van Rossuma6c707c1995-01-02 17:32:28 +00003571.7. Q. Is there a WWW page devoted to Python?
358
Guido van Rossum7be34a81995-05-31 15:17:12 +0000359A. Yes, <URL:http://www.python.org/> is the official Python home page.
360At the time of writing, this page is not yet completely operational;
361you may have a look at the old Python home page:
362<URL:http://www.cwi.nl/~guido/Python.html> or at the U.S. copy:
363<URL:http://www.python.org/~guido/Python.html>.
Guido van Rossuma6c707c1995-01-02 17:32:28 +0000364
Guido van Rossuma8a8d4a1995-03-10 16:19:31 +00003651.8. Q. Is the Python documentation available on the WWW?
Guido van Rossuma7925f11994-01-26 10:20:16 +0000366
Guido van Rossum7be34a81995-05-31 15:17:12 +0000367A. Yes, see <URL:http://www.python.org/> (Python's home page). It
368contains pointers to hypertext versions of the whole documentation set
369(as hypertext, not just PostScript).
Guido van Rossuma7925f11994-01-26 10:20:16 +0000370
Guido van Rossuma8a8d4a1995-03-10 16:19:31 +0000371If you wish to browse this collection of HTML files on your own
372machine, it is available bundled up by anonymous ftp,
Guido van Rossum7be34a81995-05-31 15:17:12 +0000373e.g. <URL:ftp://ftp.python.org/pub/python/doc/html.tar.gz>.
Guido van Rossuma8a8d4a1995-03-10 16:19:31 +0000374
375An Emacs-INFO set containing the library manual is also available by
Guido van Rossum7be34a81995-05-31 15:17:12 +0000376ftp, e.g. <URL:ftp://ftp.python.org/pub/python/doc/lib-info.tar.gz>.
Guido van Rossuma8a8d4a1995-03-10 16:19:31 +0000377
3781.9. Q. Is there a book on Python, or will there be one out soon?
379
Guido van Rossum3fc9d731995-07-25 15:10:56 +0000380A. Mark Lutz is writing a Python book for O'Reilly and Associates, to
381be published early 1996. See the outline (in PostScript):
382<URL:http://www.python.org/workshops/1995-05/outlinep.eps>.
Guido van Rossuma8a8d4a1995-03-10 16:19:31 +0000383
3841.10. Q. Are there any published articles about Python that I can quote?
Guido van Rossuma7925f11994-01-26 10:20:16 +0000385
386A. So far the only refereed and published article that describes
387Python in some detail is:
388
389 Guido van Rossum and Jelke de Boer, "Interactively Testing Remote
390 Servers Using the Python Programming Language", CWI Quarterly, Volume
391 4, Issue 4 (December 1991), Amsterdam, pp 283-303.
392
393LaTeX source for this paper is available as part of the Python source
394distribution.
395
Guido van Rossum05151e01995-09-28 13:24:46 +0000396See also the next section (supposedly Aaron Watters' paper has been
397refereed).
398
Guido van Rossuma8a8d4a1995-03-10 16:19:31 +00003991.11. Q. Are there short introductory papers or talks on Python?
Guido van Rossuma6c707c1995-01-02 17:32:28 +0000400
Guido van Rossum05151e01995-09-28 13:24:46 +0000401A. A recent, very entertaining introduction to Python is the tutorial by
402Aaron Watters in UnixWorld Online:
403
404 Aaron R. Watters: "The What, Why, Who, and Where of Python",
405 <URL:http://www.wcmh.com/uworld/archives/95/tutorial/005.html>
406
407An olded paper is:
Guido van Rossuma7925f11994-01-26 10:20:16 +0000408
409 Guido van Rossum, "An Introduction to Python for UNIX/C
410 Programmers", in the proceedings of the NLUUG najaarsconferentie
Guido van Rossum061f1821994-10-06 16:03:45 +0000411 1993 (dutch UNIX users group meeting November 1993).
Guido van Rossuma7925f11994-01-26 10:20:16 +0000412
Guido van Rossuma6c707c1995-01-02 17:32:28 +0000413PostScript for this paper and for the slides used for the accompanying
414presentation is available by ftp as
Guido van Rossum7be34a81995-05-31 15:17:12 +0000415<URL:ftp://ftp.python.org/pub/python/doc/nluug-paper.ps> and
416<URL:ftp://ftp.python.org/pub/python/doc/nluug-slides.ps>, respectively.
Guido van Rossuma6c707c1995-01-02 17:32:28 +0000417
418Slides for a talk on Python that I gave at the Usenix Symposium on
Guido van Rossum05151e01995-09-28 13:24:46 +0000419Very High Level Languages in Santa Fe, NM, USA in October 1994 are
Guido van Rossum7be34a81995-05-31 15:17:12 +0000420available as <URL:ftp://ftp.python.org/pub/python/doc/vhll-slides.ps>.
Guido van Rossuma6c707c1995-01-02 17:32:28 +0000421
Guido van Rossuma8a8d4a1995-03-10 16:19:31 +00004221.12. Q. How does the Python version numbering scheme work?
Guido van Rossum95f61a71994-01-26 17:23:37 +0000423
Guido van Rossum05151e01995-09-28 13:24:46 +0000424A. Python versions are numbered A.B.C or A.B. A is the major version
425number -- it is only incremented for major changes in functionality or
426source structure. B is the minor version number, incremented for less
Guido van Rossum95f61a71994-01-26 17:23:37 +0000427earth-shattering changes to a release. C is the patchlevel -- it is
Guido van Rossum05151e01995-09-28 13:24:46 +0000428incremented for each new patch release. Not all releases have patch
429releases. Note that in the past, patches have added significant
430changes; in fact the changeover from 0.9.9 to 1.0.0 was the first time
431that either A or B changed!
Guido van Rossum95f61a71994-01-26 17:23:37 +0000432
Guido van Rossum8727df41996-09-09 15:16:39 +0000433Beta versions have an additional suffix of "betaN" for some small
434number N. Note that (for instance) all versions labeled 1.4betaN
435*precede* the actual release of 1.4. 1.4b3 is short for 1.4beta3.
Guido van Rossuma8a8d4a1995-03-10 16:19:31 +0000436
4371.13. Q. How do I get a beta test version of Python?
438
Guido van Rossum05151e01995-09-28 13:24:46 +0000439A. If there are any beta releases, they are published in the normal
440source directory (e.g. <URL:ftp://ftp.python.org/pub/python/src/>).
Guido van Rossuma8a8d4a1995-03-10 16:19:31 +0000441
Guido van Rossum05151e01995-09-28 13:24:46 +00004421.14. Q. Are there copyright restrictions on the use of Python?
Guido van Rossum7ce61c11994-06-13 15:13:56 +0000443
444A. Hardly. You can do anything you want with the source, as long as
Guido van Rossuma6c707c1995-01-02 17:32:28 +0000445you leave the copyrights in, and display those copyrights in any
446documentation about Python that you produce. Also, don't use the
447author's institute's name in publicity without prior written
448permission, and don't hold them responsible for anything (read the
449actual copyright for a precise legal wording).
450
451In particular, if you honor the copyright rules, it's OK to use Python
452for commercial use, to sell copies of Python in source or binary form,
453or to sell products that enhance Python or incorporate Python (or part
454of it) in some form. I would still like to know about all commercial
455use of Python!
Guido van Rossum5333c5d1994-04-11 11:06:22 +0000456
Guido van Rossum05151e01995-09-28 13:24:46 +00004571.15. Q. Why was Python created in the first place?
Guido van Rossum7be34a81995-05-31 15:17:12 +0000458
459A. Here's a *very* brief summary of what got me started:
460
461- I had extensive experience with implementing an interpreted language
462in the ABC group at CWI, and from working with this group I had
463learned a lot about language design. This is the origin of many
464Python features, including the use of indentation for statement
465grouping and the inclusion of very-high-level data types (although the
466details are all different in Python).
467
468- I had a number of gripes about the ABC language, but also liked many
469of its features. It was impossible to extend the ABC language (or its
470implementation) to remedy my complaints -- in fact its lack of
471extensibility was one of its biggest problems.
472
473- I had some experience with using Modula-2+ and talked with the
474designers of Modula-3 (and read the M3 report). M3 is the origin of
475the syntax and semantics used for exceptions, and some other Python
476features.
477
478- I was working in the Amoeba distributed operating system group at
479CWI. We needed a better way to do system administration than by
480writing either C programs or Bourne shell scripts, since Amoeba had
481its own system call interface which wasn't easily accessible from the
Guido van Rossumbf8e7d51995-08-28 03:09:13 +0000482Bourne shell. My experience with error handling in Amoeba made me
483acutely aware of the importance of exceptions as a programming
484language feature.
Guido van Rossum7be34a81995-05-31 15:17:12 +0000485
486- It occurred to me that a scripting language with a syntax like ABC
487but with access to the Amoeba system calls would fill the need. I
488realized that it would be foolish to write an Amoeba-specific
489language, so I decided that I needed a language that was generally
490extensible.
491
492- During the 1989 Christmas holidays, I had a lot of time on my hand,
493so I decided to give it a try. During the next year, while still
494mostly working on it in my own time, Python was used in the Amoeba
495project with increasing success, and the feedback from colleagues made
496me add many early improvements.
497
498- In February 1991, after just over a year of development, I decided
499to post to USENET. The rest is in the Misc/HISTORY file.
500
Guido van Rossuma7925f11994-01-26 10:20:16 +0000501
5022. Python in the real world
503===========================
504
5052.1. Q. How many people are using Python?
506
Guido van Rossum5333c5d1994-04-11 11:06:22 +0000507A. I don't know, but the maximum number of simultaneous subscriptions
508to the Python mailing list before it was gatewayed into the newsgroup
509was about 180 (several of which were local redistribution lists). I
510believe that many active Python users don't bother to subscribe to the
511list, and now that there's a newsgroup the mailing list subscription
Guido van Rossum7ce61c11994-06-13 15:13:56 +0000512is even less meaningful. I see new names on the newsgroup all the
513time and my best guess is that there are currently at least several
514thousands of users.
Guido van Rossuma7925f11994-01-26 10:20:16 +0000515
Guido van Rossumb0a2ce51995-08-28 19:41:35 +0000516Another statistic is the number of accesses to the Python WWW server.
517Have a look at <URL:http://www.python.org/stats/>.
518
Guido van Rossuma7925f11994-01-26 10:20:16 +00005192.2. Q. Have any significant projects been done in Python?
520
521A. Here at CWI (the home of Python), we have written a 20,000 line
522authoring environment for transportable hypermedia presentations, a
Guido van Rossum5333c5d1994-04-11 11:06:22 +00005235,000 line multimedia teleconferencing tool, as well as many many
524smaller programs.
Guido van Rossuma7925f11994-01-26 10:20:16 +0000525
526The University of Virginia uses Python to control a virtual reality
527engine. Contact: Matt Conway <conway@virginia.edu>.
528
Guido van Rossuma6c707c1995-01-02 17:32:28 +0000529The ILU project at Xerox PARC can generate Python glue for ILU
530interfaces. See <URL:ftp://ftp.parc.xerox.com/pub/ilu/ilu.html>.
531
Guido van Rossumac3f2121995-04-10 11:53:42 +0000532The University of California, Irvine uses a student administration
533system called TELE-Vision written entirely in Python. Contact: Ray
534Price <rlprice@uci.edu>.
535
Guido van Rossumb0a2ce51995-08-28 19:41:35 +0000536See also the next question.
537
Guido van Rossumb34e8aa1994-09-23 14:20:38 +0000538If you have done a significant project in Python that you'd like to be
539included in the list above, send me email!
Guido van Rossuma7925f11994-01-26 10:20:16 +0000540
5412.3. Q. Are there any commercial projects going on using Python?
542
543A. Several companies have revealed to me that they are planning or
Guido van Rossum796b2591995-01-20 23:05:52 +0000544considering use of Python in a future product.
Guido van Rossumb34e8aa1994-09-23 14:20:38 +0000545
Guido van Rossumbf8e7d51995-08-28 03:09:13 +0000546Sunrise Software has a product out using Python -- they use Python
Guido van Rossumac3f2121995-04-10 11:53:42 +0000547for a GUI management application and an SNMP network management
548application. Contact: <info@sunrise.com>.
Guido van Rossuma7925f11994-01-26 10:20:16 +0000549
Guido van Rossuma6c707c1995-01-02 17:32:28 +0000550Infoseek uses Python to implement their commercial WWW information
551retrieval service <URL:http://www.infoseek.com/>. Contact:
552<info@infoseek.com>.
Guido van Rossumf8c76d01994-08-17 12:19:53 +0000553
Guido van Rossuma6c707c1995-01-02 17:32:28 +0000554Paul Everitt of Connecting Minds is planning a Lotus Notes gateway.
555Contact: <Paul.Everitt@cminds.com>. Or see their WWW server
556<URL:http://www.cminds.com/>.
557
Guido van Rossumac3f2121995-04-10 11:53:42 +0000558KaPRE in Boulder, CO is using Python for on-site customization of C++
559applications, rapid-prototyping/development,
560language-based-components, and possibly more. This is pretty solid:
561Python's being shipped with their tool-set now, to beta sites.
562Contact: <lutz@KaPRE.COM> (Mark Lutz).
563
564Individuals at many other companies are using Python for internal
565development or for as yet unannounced products (witness their
566contributions to the Python mailing list or newsgroup).
Guido van Rossuma7925f11994-01-26 10:20:16 +0000567
Guido van Rossumb0a2ce51995-08-28 19:41:35 +0000568SGI has advertised in the Python list looking for Python programmers
569for a project involving interactive television.
570
571See also the workshop minutes at
572<URL:http://www.python.org/workshops/> -- in general the WWW server is
573more up to date than the FAQ for these issues.
574
Guido van Rossuma7925f11994-01-26 10:20:16 +0000575Python has also been elected as an extension language by MADE, a
576consortium supported by the European Committee's ESPRIT program and
577consisting of Bull, CWI and some other European companies. Contact:
578Ivan Herman <ivan@cwi.nl>.
579
Guido van Rossumb34e8aa1994-09-23 14:20:38 +0000580If you'd like to be included in the list above, send me email!
581
Guido van Rossum95f61a71994-01-26 17:23:37 +00005822.4. Q. How stable is Python?
Guido van Rossuma7925f11994-01-26 10:20:16 +0000583
Guido van Rossum3de27361994-07-25 14:19:33 +0000584A. Very stable. While the current version number would suggest it is
585in the early stages of development, in fact new, stable releases
Guido van Rossume7d92d51995-10-11 18:06:54 +0000586(numbered 0.9.x through 1.3) have been coming out roughly every 3 to
Guido van Rossuma6c707c1995-01-02 17:32:28 +00005876 months for the past four years.
Guido van Rossuma7925f11994-01-26 10:20:16 +0000588
Guido van Rossum8727df41996-09-09 15:16:39 +00005892.5. Q. What new developments are expected for Python in the future?
Guido van Rossuma7925f11994-01-26 10:20:16 +0000590
Guido van Rossum7be34a81995-05-31 15:17:12 +0000591A. See my Work-In-Progress web page, currently at
592<URL:http://www.python.org:~guido/WIP.html>, and the pages for the
593Second Python Workshop (best reached via the Python home page,
Guido van Rossumb0a2ce51995-08-28 19:41:35 +0000594<URL:http://www.python.org/>). Also follow the newsgroup discussions!
Guido van Rossuma6c707c1995-01-02 17:32:28 +0000595
Guido van Rossum8727df41996-09-09 15:16:39 +00005962.6. Q. Is it reasonable to propose incompatible changes to Python?
Guido van Rossum3de27361994-07-25 14:19:33 +0000597
598A. In general, no. There are already millions of lines of Python code
599around the world, so any changes in the language that invalidates more
600than a very small fraction of existing programs has to be frowned
601upon. Even if you can provide a conversion program, there still is
602the problem of updating all documentation. Providing a gradual
603upgrade path is the only way if a feature has to be changed.
604
Guido van Rossum8727df41996-09-09 15:16:39 +00006052.7. Q. What is the future of Python?
Guido van Rossuma7925f11994-01-26 10:20:16 +0000606
Guido van Rossumb0a2ce51995-08-28 19:41:35 +0000607A. If I knew, I'd be rich :-)
608
609Seriously, the formation of the PSA (Pyton Software Activity, see
610<URL:http://www.python.org/psa/>) ensures some kind of support even in
611the (unlikely! event that I'd be hit by a bus (actually, here in the
612US, a car accident would be more likely :-), were to join a nunnery,
613or would be head-hunted. A large number of Python users have become
614experts at Python programming as well as maintenance of the
615implementation, and would easily fill the vacuum created by my
616disappearance.
617
618In the mean time, I have no plans to disappear -- rather, I am
619committed to improving Python, and my current benefactor, CNRI (see
620<URL:http://www.cnri.reston.va.us>) is just as committed to continue
621its support of Python and the PSA. In fact, we have great plans for
622Python -- we just can't tell yet!
623
Guido van Rossum8727df41996-09-09 15:16:39 +00006242.8. Q. What is the PSA, anyway?
Guido van Rossum05151e01995-09-28 13:24:46 +0000625
626A. The Python Software Activity <URL:http://www.python.org/psa/> was
627created by a number of Python aficionados who want Python to be more
628than the product and responsibility of a single individual. It has
629found a home at CNRI <URL:http://www.cnri.reston.va.us>. Anybody who
630wishes Python well should join the PSA.
631
Guido van Rossum8727df41996-09-09 15:16:39 +00006322.9. Q. How do I join the PSA?
Guido van Rossum05151e01995-09-28 13:24:46 +0000633
634A. The full scoop is available on the web, see
635<URL:http://www.python.org/psa/Joining.html>. Summary: send a check
636of at least $50 to CNRI/PSA, 1895 Preston White Drive, Suite 100, in
Guido van Rossum81300541996-09-06 16:37:56 +0000637Reston, VA 20191. Full-time students pay $25. Companies can join for
Guido van Rossum05151e01995-09-28 13:24:46 +0000638a mere $500.
639
Guido van Rossum8727df41996-09-09 15:16:39 +00006402.10. Q. What are the benefits of joining the PSA?
Guido van Rossum05151e01995-09-28 13:24:46 +0000641
642A. Like National Public Radio, if not enough people join, Python will
643wither. Your name will be mentioned on the PSA's web server.
644Workshops organized by the PSA <URL:http://www.python.org/workshops/>
645are only accessible to PSA members (you can join at the door). The
646PSA is working on additional benefits, such as reduced prices for
647books and software, and early access to beta versions of Python.
648
Guido van Rossumb0a2ce51995-08-28 19:41:35 +0000649
6503. Building Python and Other Known Bugs
651=======================================
Guido van Rossuma7925f11994-01-26 10:20:16 +0000652
Guido van Rossum91f60831994-02-15 15:52:27 +00006533.1. Q. Is there a test set?
Guido van Rossuma7925f11994-01-26 10:20:16 +0000654
655A. Yes, simply do "import testall" (or "import autotest" if you aren't
656interested in the output). The standard modules whose name begins
657with "test" together comprise the test. The test set doesn't test
658*all* features of Python but it goes a long way to confirm that a new
659port is actually working. The Makefile contains an entry "make test"
Guido van Rossuma6c707c1995-01-02 17:32:28 +0000660which runs the autotest module. NOTE: if "make test" fails, run the
661tests manually ("import testall") to see what goes wrong before
662reporting the error.
Guido van Rossuma7925f11994-01-26 10:20:16 +0000663
Guido van Rossum91f60831994-02-15 15:52:27 +00006643.2. Q. When running the test set, I get complaints about floating point
Guido van Rossuma7925f11994-01-26 10:20:16 +0000665operations, but when playing with floating point operations I cannot
666find anything wrong with them.
667
668A. The test set makes occasional unwarranted assumptions about the
669semantics of C floating point operations. Until someone donates a
670better floating point test set, you will have to comment out the
671offending floating point tests and execute similar tests manually.
672
Guido van Rossum7be34a81995-05-31 15:17:12 +00006733.3. Q. Link errors after rerunning the configure script.
Guido van Rossum24349991994-02-02 14:12:45 +0000674
675A. It is generally necessary to run "make clean" after a configuration
676change.
677
Guido van Rossum7be34a81995-05-31 15:17:12 +00006783.4. Q. The python interpreter complains about options passed to a
Guido van Rossum24349991994-02-02 14:12:45 +0000679script (after the script name).
680
681A. You are probably linking with GNU getopt, e.g. through -liberty.
Guido van Rossumf8c76d01994-08-17 12:19:53 +0000682Don't. The reason for the complaint is that GNU getopt, unlike System
683V getopt and other getopt implementations, doesn't consider a
684non-option to be the end of the option list. A quick (and compatible)
685fix for scripts is to add "--" to the interpreter, like this:
686
Guido van Rossuma6c707c1995-01-02 17:32:28 +0000687 #! /usr/local/bin/python --
Guido van Rossumf8c76d01994-08-17 12:19:53 +0000688
689You can also use this interactively:
690
Guido van Rossuma6c707c1995-01-02 17:32:28 +0000691 python -- script.py [options]
692
693Note that a working getopt implementation is provided in the Python
694distribution (in Python/getopt.c) but not automatically used.
Guido van Rossum24349991994-02-02 14:12:45 +0000695
Guido van Rossum7be34a81995-05-31 15:17:12 +00006963.5. Q. When building on the SGI, make tries to run python to create
Guido van Rossum24349991994-02-02 14:12:45 +0000697glmodule.c, but python hasn't been built or installed yet.
698
699A. Comment out the line mentioning glmodule.c in Setup and build a
700python without gl first; install it or make sure it is in your $PATH,
701then edit the Setup file again to turn on the gl module, and make
702again. You don't need to do "make clean"; you do need to run "make
703Makefile" in the Modules subdirectory (or just run "make" at the
704toplevel).
705
Guido van Rossum8727df41996-09-09 15:16:39 +00007063.6. Q. I use VPATH but some targets are built in the source directory.
Guido van Rossumb34e8aa1994-09-23 14:20:38 +0000707
708A. On some systems (e.g. Sun), if the target already exists in the
709source directory, it is created there instead of in the build
710directory. This is usually because you have previously built without
711VPATH. Try running "make clobber" in the source directory.
712
Guido van Rossum8727df41996-09-09 15:16:39 +00007133.7. Q. Trouble building or linking with the GNU readline library.
Guido van Rossumb34e8aa1994-09-23 14:20:38 +0000714
Guido van Rossumac3f2121995-04-10 11:53:42 +0000715A. Consider using readline 2.0. Some hints:
Guido van Rossumb34e8aa1994-09-23 14:20:38 +0000716
717- You can use the GNU readline library to improve the interactive user
718interface: this gives you line editing and command history when
Guido van Rossum796b2591995-01-20 23:05:52 +0000719calling python interactively. You need to configure and build the GNU
Guido van Rossumb34e8aa1994-09-23 14:20:38 +0000720readline library before running the configure script. Its sources are
721no longer distributed with Python; you can ftp them from any GNU
Guido van Rossuma6c707c1995-01-02 17:32:28 +0000722mirror site, or from its home site
723<URL:ftp://slc2.ins.cwru.edu/pub/dist/readline-2.0.tar.gz> (or a
724higher version number -- using version 1.x is not recommended). Pass
725the Python configure script the option --with-readline=DIRECTORY where
Guido van Rossumb34e8aa1994-09-23 14:20:38 +0000726DIRECTORY is the absolute pathname of the directory where you've built
727the readline library. Some hints on building and using the readline
728library:
729
730- On SGI IRIX 5, you may have to add the following
731to rldefs.h:
732
Guido van Rossuma6c707c1995-01-02 17:32:28 +0000733 #ifndef sigmask
734 #define sigmask(sig) (1L << ((sig)-1))
735 #endif
Guido van Rossumb34e8aa1994-09-23 14:20:38 +0000736
737- On most systems, you will have to add #include "rldefs.h" to the
738top of several source files, and if you use the VPATH feature, you
739will have to add dependencies of the form foo.o: foo.c to the
740Makefile for several values of foo.
741
742- The readline library requires use of the termcap library. A
743known problem with this is that it contains entry points which
Guido van Rossum061f1821994-10-06 16:03:45 +0000744cause conflicts with the STDWIN and SGI GL libraries. The STDWIN
Guido van Rossumb34e8aa1994-09-23 14:20:38 +0000745conflict can be solved (and will be, in the next release of
Guido van Rossum061f1821994-10-06 16:03:45 +0000746STDWIN) by adding a line saying '#define werase w_erase' to the
747stdwin.h file (in the STDWIN distribution, subdirectory H). The
Guido van Rossumb34e8aa1994-09-23 14:20:38 +0000748GL conflict has been solved in the Python configure script by a
749hack that forces use of the static version of the termcap library.
750
Guido van Rossumac3f2121995-04-10 11:53:42 +0000751- Check the newsgroup gnu.bash.bug <URL:news:gnu.bash.bug> for
752specific problems with the readline library (I don't read this group
753but I've been told that it is the place for readline bugs).
Guido van Rossumb34e8aa1994-09-23 14:20:38 +0000754
Guido van Rossum8727df41996-09-09 15:16:39 +00007553.8. Q. Trouble with socket I/O on older Linux 1.x versions.
Guido van Rossumca318ec1996-06-26 19:50:09 +0000756
757A. Once you've built Python, use it to run the regen.py script in the
758Lib/linux1 directory. Apparently the files as distributed don't match
759the system headers on some Linux versions.
760
Guido van Rossum8727df41996-09-09 15:16:39 +00007613.9. Q. Trouble with prototypes on Ultrix.
Guido van Rossum72eb83c1994-10-07 11:33:28 +0000762
763A. Ultrix cc seems broken -- use gcc, or edit config.h to #undef
764HAVE_PROTOTYPES.
765
Guido van Rossum8727df41996-09-09 15:16:39 +00007663.10. Q. Trouble with posix.listdir on NeXTSTEP 3.2.
Guido van Rossum9351fdb1994-11-10 23:03:51 +0000767
Guido van Rossum3fc9d731995-07-25 15:10:56 +0000768A. (This often manifests itself as a weird error from the
769compileall.py script run by "make libinstall".)
Guido van Rossum9351fdb1994-11-10 23:03:51 +0000770
Guido van Rossum3fc9d731995-07-25 15:10:56 +0000771Don't use gcc, use the Next C compiler (cc). Even though it is
772derived from (an old version of) gcc, its interpretation of the
773"-posix" switch is different; in this particular case, cc is right and
774gcc is wrong.
Guido van Rossum9351fdb1994-11-10 23:03:51 +0000775
Guido van Rossum8727df41996-09-09 15:16:39 +00007763.11. Q. Other trouble building Python on platform X.
Guido van Rossum95f61a71994-01-26 17:23:37 +0000777
Guido van Rossum81300541996-09-06 16:37:56 +0000778A. Please email the details to <guido@cnri.reston.va.us> and I'll look
779into it. Please provide as many details as possible. In particular,
780if you don't tell me what type of computer and what operating system
781(and version) you are using it will be difficult for me to figure out
782what is the matter. If you get a specific error message, please email
783it to me too.
Guido van Rossuma7925f11994-01-26 10:20:16 +0000784
Guido van Rossum8727df41996-09-09 15:16:39 +00007853.12. Q. How to configure dynamic loading on Linux.
Guido van Rossum07779351995-02-07 16:59:56 +0000786
Guido van Rossum8727df41996-09-09 15:16:39 +0000787A. This is now automatic as long as your Linux version uses the ELF
788object format (all recent Linuxes do).
Guido van Rossum07779351995-02-07 16:59:56 +0000789
Guido van Rossum8727df41996-09-09 15:16:39 +00007903.13. Q. Errors when linking with a shared library containing C++ code.
Guido van Rossum3fc9d731995-07-25 15:10:56 +0000791
792A. Link the main Python binary with C++. Change the definition of
793LINKCC in Modules/Makefile to be your C++ compiler. You may have to
794edit config.c slightly to make it compilable with C++.
Guido van Rossum07779351995-02-07 16:59:56 +0000795
Guido van Rossum8727df41996-09-09 15:16:39 +00007963.14. Q. I built with tkintermodule.c enabled but get "Tkinter not found".
Guido van Rossumb0a2ce51995-08-28 19:41:35 +0000797
798A. Tkinter.py (note: upper case T) lives in a subdirectory of Lib,
799Lib/tkinter. If you are using the default module search path, you
800probably didn't enable the line in the Modules/Setup file defining
801TKPATH; if you use the environment variable PYTHONPATH, you'll have to
802add the proper tkinter subdirectory.
803
Guido van Rossum8727df41996-09-09 15:16:39 +00008043.15. Q. I built with Tk 4.0 but Tkinter complains about the Tk version.
Guido van Rossumb0a2ce51995-08-28 19:41:35 +0000805
806A. Several things could cause this. You most likely have a Tk 3.6
807installation that wasn't completely eradicated by the Tk 4.0
808installation (which tends to add "4.0" to its installed files). You
809may have the Tk 3.6 support library installed in the place where the
810Tk 4.0 support files should be (default /usr/local/lib/tk/); you may
811have compiled Python with the old tk.h header file (yes, this actually
812compiles!); you may actually have linked with Tk 3.6 even though Tk
8134.0 is also around. Similar for Tcl 7.4 vs. Tcl 7.3.
814
Guido van Rossum8727df41996-09-09 15:16:39 +00008153.16. Q. Link errors for Tcl/Tk symbols when linking with Tcl/Tk.
816
817Quite possibly, there's a version mismatch between the Tcl/Tk header
818files (tcl.h and tk.h) and the tck/tk libraries you are using (the
819"-ltk4.0" and "-ltcl7.4" arguments for _tkinter in the Setup file).
820If you have installed both versions 7.4/4.0 and 7.5/4.1 of Tcl/Tk,
821most likely your header files are for The newer versions, but the
822Setup line for _tkinter in some Python distributions references
8237.4/4.0 by default. Changing this to 7.5/4.1 should take care of
824this.
825
8263.17. Q. I configured and built Python for Tcl/Tk but "import Tkinter"
827fails.
828
829A. Most likely, you forgot to enable the line in Setup that says
830"TKPATH=:$(DESTLIB)/tkinter".
831
8323.18. Q. Tk doesn't work right on DEC Alpha.
Guido van Rossumb0a2ce51995-08-28 19:41:35 +0000833
834A. You probably compiled either Tcl, Tk or Python with gcc. Don't.
835For this platform, which has 64-bit integers, gcc is known to generate
836broken code. The standard cc (which comes bundled with the OS!)
837works. If you still prefer gcc, at least try recompiling with cc
838before reporting problems to the newsgroup or the author; if this
839fixes the problem, report the bug to the gcc developers instead. (As
840far as we know, there are no problem with gcc on other platforms --
841the instabilities seem to be restricted to the DEC Alpha.) See also
842question 3.6.
843
Guido van Rossum8727df41996-09-09 15:16:39 +00008443.19. Q. Several common system calls are missing from the posix module.
Guido van Rossumca318ec1996-06-26 19:50:09 +0000845
846A. Most likely, *all* test compilations run by the configure script
847are failing for some reason or another. Have a look in config.log to
848see what could be the reason. A common reason is specifying a
849directory to the --with-readline option that doesn't contain the
850libreadline.a file.
851
Guido van Rossum8727df41996-09-09 15:16:39 +00008523.20. Q. ImportError: No module named string, on MS Windows.
Guido van Rossumca318ec1996-06-26 19:50:09 +0000853
854A. Most likely, your PYTHONPATH environment variable should be set to
855something like:
856
857set PYTHONPATH=c:\python;c:\python\lib;c:\python\scripts
858
859(assuming Python was installed in c:\python)
860
Guido van Rossum8727df41996-09-09 15:16:39 +00008613.21. Q. Core dump on SGI when using the gl module.
Guido van Rossumca318ec1996-06-26 19:50:09 +0000862
863There are conflicts between entry points in the termcap and curses
864libraries and an entry point in the GL library. There's a hack of a
865fix for the termcap library if it's needed for the GNU readline
866library, but it doesn't work when you're using curses. Concluding,
867you can't build a Python binary containing both the curses and gl
868modules.
869
870
Guido van Rossuma7925f11994-01-26 10:20:16 +0000871
8724. Programming in Python
873========================
874
Guido van Rossum24349991994-02-02 14:12:45 +00008754.1. Q. Is there a source code level debugger with breakpoints, step,
876etc.?
877
878A. Yes. Check out module pdb; pdb.help() prints the documentation (or
879you can read it as Lib/pdb.doc). If you use the STDWIN option,
880there's also a windowing interface, wdb. You can write your own
881debugger by using the code for pdb or wdb as an example.
882
8834.2. Q. Can I create an object class with some methods implemented in
Guido van Rossuma7925f11994-01-26 10:20:16 +0000884C and others in Python (e.g. through inheritance)? (Also phrased as:
885Can I use a built-in type as base class?)
886
887A. No, but you can easily create a Python class which serves as a
888wrapper around a built-in object, e.g. (for dictionaries):
889
Guido van Rossuma6c707c1995-01-02 17:32:28 +0000890 # A user-defined class behaving almost identical
891 # to a built-in dictionary.
892 class UserDict:
893 def __init__(self): self.data = {}
894 def __repr__(self): return repr(self.data)
895 def __cmp__(self, dict):
896 if type(dict) == type(self.data):
897 return cmp(self.data, dict)
898 else:
899 return cmp(self.data, dict.data)
900 def __len__(self): return len(self.data)
901 def __getitem__(self, key): return self.data[key]
902 def __setitem__(self, key, item): self.data[key] = item
903 def __delitem__(self, key): del self.data[key]
904 def keys(self): return self.data.keys()
905 def items(self): return self.data.items()
906 def values(self): return self.data.values()
907 def has_key(self, key): return self.data.has_key(key)
Guido van Rossuma7925f11994-01-26 10:20:16 +0000908
Guido van Rossum24349991994-02-02 14:12:45 +00009094.3. Q. Is there a curses/termcap package for Python?
Guido van Rossuma7925f11994-01-26 10:20:16 +0000910
Guido van Rossuma6c707c1995-01-02 17:32:28 +0000911A. Yes -- Lance Ellinghaus has written a module that interfaces to
Guido van Rossumb34e8aa1994-09-23 14:20:38 +0000912System V's "ncurses". If you know a little curses and some Python,
Guido van Rossuma6c707c1995-01-02 17:32:28 +0000913it's straightforward to use. It is part of the standard Python
914distribution, but not configured by default -- you must enable it by
915editing Modules/Setup. It requires a System V curses implementation.
Guido van Rossumb34e8aa1994-09-23 14:20:38 +0000916
917You could also consider using the "alfa" (== character cell) version
Guido van Rossuma6c707c1995-01-02 17:32:28 +0000918of STDWIN. (Standard Window System Interface, a portable windowing
919system interface by myself <URL:ftp://ftp.cwi.nl/pub/stdwin/>.) This
Guido van Rossumb34e8aa1994-09-23 14:20:38 +0000920will also prepare your program for porting to windowing environments
921such as X11 or the Macintosh.
Guido van Rossuma7925f11994-01-26 10:20:16 +0000922
Guido van Rossum24349991994-02-02 14:12:45 +00009234.4. Q. Is there an equivalent to C's onexit() in Python?
Guido van Rossuma7925f11994-01-26 10:20:16 +0000924
925A. Yes, if you import sys and assign a function to sys.exitfunc, it
926will be called when your program exits, is killed by an unhandled
927exception, or (on UNIX) receives a SIGHUP or SIGTERM signal.
928
Guido van Rossum24349991994-02-02 14:12:45 +00009294.5. Q. When I define a function nested inside another function, the
Guido van Rossuma7925f11994-01-26 10:20:16 +0000930nested function seemingly can't access the local variables of the
931outer function. What is going on? How do I pass local data to a
932nested function?
933
934A. Python does not have arbitrarily nested scopes. When you need to
935create a function that needs to access some data which you have
936available locally, create a new class to hold the data and return a
937method of an instance of that class, e.g.:
938
Guido van Rossuma6c707c1995-01-02 17:32:28 +0000939 class MultiplierClass:
940 def __init__(self, factor):
941 self.factor = factor
942 def multiplier(self, argument):
943 return argument * self.factor
Guido van Rossuma7925f11994-01-26 10:20:16 +0000944
Guido van Rossuma6c707c1995-01-02 17:32:28 +0000945 def generate_multiplier(factor):
946 return MultiplierClass(factor).multiplier
Guido van Rossuma7925f11994-01-26 10:20:16 +0000947
Guido van Rossuma6c707c1995-01-02 17:32:28 +0000948 twice = generate_multiplier(2)
949 print twice(10)
950 # Output: 20
951
952An alternative solution uses default arguments, e.g.:
953
954 def generate_multiplier(factor):
955 def multiplier(arg, fact = factor):
956 return arg*fact
957 return multiplier
958
959 twice = generate_multiplier(2)
960 print twice(10)
961 # Output: 20
Guido van Rossuma7925f11994-01-26 10:20:16 +0000962
Guido van Rossum24349991994-02-02 14:12:45 +00009634.6. Q. How do I iterate over a sequence in reverse order?
Guido van Rossuma7925f11994-01-26 10:20:16 +0000964
965A. If it is a list, the fastest solution is
966
Guido van Rossuma6c707c1995-01-02 17:32:28 +0000967 list.reverse()
968 try:
969 for x in list:
970 "do something with x"
971 finally:
972 list.reverse()
Guido van Rossuma7925f11994-01-26 10:20:16 +0000973
974This has the disadvantage that while you are in the loop, the list
975is temporarily reversed. If you don't like this, you can make a copy.
976This appears expensive but is actually faster than other solutions:
977
Guido van Rossuma6c707c1995-01-02 17:32:28 +0000978 rev = list[:]
979 rev.reverse()
980 for x in rev:
981 <do something with x>
Guido van Rossuma7925f11994-01-26 10:20:16 +0000982
983If it isn't a list, a more general but slower solution is:
984
Guido van Rossuma6c707c1995-01-02 17:32:28 +0000985 i = len(list)
986 while i > 0:
987 i = i-1
988 x = list[i]
989 <do something with x>
Guido van Rossuma7925f11994-01-26 10:20:16 +0000990
991A more elegant solution, is to define a class which acts as a sequence
992and yields the elements in reverse order (solution due to Steve
993Majewski):
994
Guido van Rossuma6c707c1995-01-02 17:32:28 +0000995 class Rev:
996 def __init__(self, seq):
997 self.forw = seq
998 def __len__(self):
999 return len(self.forw)
1000 def __getitem__(self, i):
1001 return self.forw[-(i + 1)]
Guido van Rossuma7925f11994-01-26 10:20:16 +00001002
1003You can now simply write:
1004
Guido van Rossuma6c707c1995-01-02 17:32:28 +00001005 for x in Rev(list):
1006 <do something with x>
Guido van Rossuma7925f11994-01-26 10:20:16 +00001007
Guido van Rossum061f1821994-10-06 16:03:45 +00001008Unfortunately, this solution is slowest of all, due to the method
Guido van Rossuma7925f11994-01-26 10:20:16 +00001009call overhead...
1010
Guido van Rossum24349991994-02-02 14:12:45 +000010114.7. Q. My program is too slow. How do I speed it up?
Guido van Rossuma7925f11994-01-26 10:20:16 +00001012
1013A. That's a tough one, in general. There are many tricks to speed up
1014Python code; I would consider rewriting parts in C only as a last
1015resort. One thing to notice is that function and (especially) method
1016calls are rather expensive; if you have designed a purely OO interface
1017with lots of tiny functions that don't do much more than get or set an
1018instance variable or call another method, you may consider using a
1019more direct way, e.g. directly accessing instance variables. Also see
1020the standard module "profile" (described in the file
1021"python/lib/profile.doc") which makes it possible to find out where
1022your program is spending most of its time (if you have some patience
1023-- the profiling itself can slow your program down by an order of
1024magnitude).
1025
Guido van Rossum24349991994-02-02 14:12:45 +000010264.8. Q. When I have imported a module, then edit it, and import it
Guido van Rossuma7925f11994-01-26 10:20:16 +00001027again (into the same Python process), the changes don't seem to take
1028place. What is going on?
1029
Guido van Rossuma6c707c1995-01-02 17:32:28 +00001030A. For reasons of efficiency as well as consistency, Python only reads
Guido van Rossum796b2591995-01-20 23:05:52 +00001031the module file on the first time a module is imported. (Otherwise a
Guido van Rossuma6c707c1995-01-02 17:32:28 +00001032program consisting of many modules, each of which imports the same
Guido van Rossum796b2591995-01-20 23:05:52 +00001033basic module, would read the basic module over and over again.) To
1034force rereading of a changed module, do this:
Guido van Rossuma7925f11994-01-26 10:20:16 +00001035
Guido van Rossuma6c707c1995-01-02 17:32:28 +00001036 import modname
1037 reload(modname)
Guido van Rossuma7925f11994-01-26 10:20:16 +00001038
1039Warning: this technique is not 100% fool-proof. In particular,
1040modules containing statements like
1041
Guido van Rossuma6c707c1995-01-02 17:32:28 +00001042 from modname import some_objects
Guido van Rossuma7925f11994-01-26 10:20:16 +00001043
Guido van Rossumb34e8aa1994-09-23 14:20:38 +00001044will continue to work with the old version of the imported objects.
Guido van Rossuma7925f11994-01-26 10:20:16 +00001045
Guido van Rossumb34e8aa1994-09-23 14:20:38 +000010464.9. Q. How do I find the current module name?
Guido van Rossum24349991994-02-02 14:12:45 +00001047
Guido van Rossum061f1821994-10-06 16:03:45 +00001048A. A module can find out its own module name by looking at the
Guido van Rossum24349991994-02-02 14:12:45 +00001049(predefined) global variable __name__. If this has the value
Guido van Rossumb34e8aa1994-09-23 14:20:38 +00001050'__main__' you are running as a script.
1051
Guido van Rossuma6c707c1995-01-02 17:32:28 +000010524.10. Q. I have a module in which I want to execute some extra code
1053when it is run as a script. How do I find out whether I am running as
1054a script?
Guido van Rossumb34e8aa1994-09-23 14:20:38 +00001055
1056A. See the previous question. E.g. if you put the following on the
1057last line of your module, main() is called only when your module is
1058running as a script:
Guido van Rossum24349991994-02-02 14:12:45 +00001059
Guido van Rossuma6c707c1995-01-02 17:32:28 +00001060 if __name__ == '__main__': main()
Guido van Rossum24349991994-02-02 14:12:45 +00001061
Guido van Rossuma6c707c1995-01-02 17:32:28 +000010624.11. Q. I try to run a program from the Demo directory but it fails
1063with ImportError: No module named ...; what gives?
Guido van Rossum7ce61c11994-06-13 15:13:56 +00001064
Guido van Rossum061f1821994-10-06 16:03:45 +00001065A. This is probably an optional module (written in C!) which hasn't
1066been configured on your system. This especially happens with modules
Guido van Rossuma6c707c1995-01-02 17:32:28 +00001067like "Tkinter", "stdwin", "gl", "Xt" or "Xm". For Tkinter, STDWIN and
1068many other modules, see Modules/Setup.in for info on how to add these
1069modules to your Python, if it is possible at all. Sometimes you will
1070have to ftp and build another package first (e.g. STDWIN). Sometimes
1071the module only works on specific platforms (e.g. gl only works on SGI
1072machines).
1073
1074NOTE: if the complaint is about "Tkinter" (upper case T) and you have
Guido van Rossumca318ec1996-06-26 19:50:09 +00001075already configured module "tkinter" (lower case t), the solution is
1076*not* to rename tkinter to Tkinter or vice versa. There is probably
1077something wrong with your module search path. Check out the value of
1078sys.path.
Guido van Rossum7ce61c11994-06-13 15:13:56 +00001079
Guido van Rossum061f1821994-10-06 16:03:45 +00001080For X-related modules (Xt and Xm) you will have to do more work: they
1081are currently not part of the standard Python distribution. You will
Guido van Rossuma6c707c1995-01-02 17:32:28 +00001082have to ftp the Extensions tar file, e.g.
Guido van Rossum7be34a81995-05-31 15:17:12 +00001083<URL:ftp://ftp.python.org/pub/python/src/extensions.tar.gz> and follow
1084the instructions there.
Guido van Rossum061f1821994-10-06 16:03:45 +00001085
1086See also the next question.
1087
10884.12. Q. I have successfully built Python with STDWIN but it can't
1089find some modules (e.g. stdwinevents).
Guido van Rossumb34e8aa1994-09-23 14:20:38 +00001090
1091A. There's a subdirectory of the library directory named 'stdwin'
1092which should be in the default module search path. There's a line in
1093Modules/Setup(.in) that you have to enable for this purpose --
Guido van Rossum061f1821994-10-06 16:03:45 +00001094unfortunately in the latest release it's not near the other
Guido van Rossumb34e8aa1994-09-23 14:20:38 +00001095STDWIN-related lines so it's easy to miss it.
1096
10974.13. Q. What GUI toolkits exist for Python?
Guido van Rossum7ce61c11994-06-13 15:13:56 +00001098
1099A. Depending on what platform(s) you are aiming at, there are several.
1100
Guido van Rossumc458e941996-09-11 15:43:13 +00001101Currently supported solutions:
1102
Guido van Rossumb34e8aa1994-09-23 14:20:38 +00001103- There's a neat object-oriented interface to the Tcl/Tk widget set,
Guido van Rossumc458e941996-09-11 15:43:13 +00001104called Tkinter. It is part of the standard Python distribution and
1105well-supported -- all you need to do is build and install Tcl/Tk and
1106enable the _tkinter module and the TKPATH definition in Modules/Setup
1107when building Python. This is probably the easiest to install and
1108use, and the most complete widget set. It is also very likely that in
1109the future the standard Python GUI API will be based on or at least
1110look very much like the Tkinter interface. For more info about Tk,
1111including pointers to the source, see the Tcl/Tk home page
1112<URL:http://www.sunlabs.com/research/tcl/>. Tcl/Tk is now fully
1113portable to the Mac and Windows platforms (NT and 95 only); you need
1114Python 1.4beta3 or later and Tk 4.1patch1 or later.
Guido van Rossum7ce61c11994-06-13 15:13:56 +00001115
1116- There's an interface to X11, including the Athena and Motif widget
1117sets (and a few individual widgets, like Mosaic's HTML widget and
Guido van Rossumc458e941996-09-11 15:43:13 +00001118SGI's GL widget) available from
1119<URL:ftp://ftp.python.org/pub/python/src/X-extension.tar.gz>.
1120Support by Sjoerd Mullender <sjoerd@cwi.nl>.
Guido van Rossum7ce61c11994-06-13 15:13:56 +00001121
Guido van Rossumc458e941996-09-11 15:43:13 +00001122- The Mac port has a rich and ever-growing set of modules that support
1123the native Mac toolbox calls. See the documentation that comes with
1124the Mac port. See <URL:ftp://ftp.python.org/pub/python/mac>. Support
1125by Jack Jansen <jack@cwi.nl>.
Guido van Rossum7ce61c11994-06-13 15:13:56 +00001126
Guido van Rossumc458e941996-09-11 15:43:13 +00001127- The NT port supported by Mark Hammond <MHammond@skippinet.com.au>
1128(see question 7.2) includes an interface to the Microsoft Foundation
1129Classes and a Python programming environment using it that's written
1130mostly in Python. See
1131<URL:ftp://ftp.python.org/pub/python/pythonwin/>.
Guido van Rossum7ce61c11994-06-13 15:13:56 +00001132
Guido van Rossumc458e941996-09-11 15:43:13 +00001133- There's an object-oriented GUI based on the Microsoft Foundation
1134Classes model called WPY, supported by Jim Ahlstrom <jim@interet.com>.
1135Programs written in WPY run unchanged and with native look and feel on
1136Windows NT/95, Windows 3.1 (using win32s), and on Unix (using Tk).
1137Source and binaries for Windows and Linux are available in
1138<URL:ftp://ftp.python.org/pub/python/wpy/>.
1139
1140Obsolete or minority solutions:
Guido van Rossumbf8e7d51995-08-28 03:09:13 +00001141
Guido van Rossuma8a8d4a1995-03-10 16:19:31 +00001142- There's an interface to wxWindows. wxWindows is a portable GUI
1143class library written in C++. It supports XView, Motif, MS-Windows as
Guido van Rossumc458e941996-09-11 15:43:13 +00001144targets. There is some support for Macs and CURSES as well.
1145wxWindows preserves the look and feel of the underlying graphics
1146toolkit. See the wxPython WWW page at
Guido van Rossuma8a8d4a1995-03-10 16:19:31 +00001147<URL:http://www.aiai.ed.ac.uk/~jacs/wx/wxpython/wxpython.html>.
Guido van Rossumc458e941996-09-11 15:43:13 +00001148Support for wxPython (by Harri Pasanen <pa@tekla.fi>) appears
1149to have a low priority.
Guido van Rossuma8a8d4a1995-03-10 16:19:31 +00001150
Guido van Rossumc458e941996-09-11 15:43:13 +00001151- For SGI IRIX only, there are unsupported interfaces to the complete
1152GL (Graphics Library -- low level but very good 3D capabilities) as
1153well as to FORMS (a buttons-and-sliders-etc package built on top of GL
1154by Mark Overmars -- ftp'able from
1155<URL:ftp://ftp.cs.ruu.nl/pub/SGI/FORMS/>). This is probably also
1156becoming obsolete, as OpenGL takes over.
1157
1158- There's an interface to STDWIN, a platform-independent low-level
1159windowing interface for Mac and X11. This is totally unsupported and
1160rapidly becoming obsolete. The STDWIN sources are at
1161<URL:ftp://ftp.cwi.nl/pub/stdwin/>. (For info about STDWIN 2.0,
1162please refer to Steven Pemberton <steven@cwi.nl> -- I believe it is
1163also dead.)
1164
1165- There once was an interface to WAFE, a Tcl interface to the X11
1166Motif and Athena widget sets. WAFE is at
1167<URL:ftp://ftp.wu-wien.ac.at/pub/src/X11/wafe/>. It's not clear what
1168the status of the Python support is.
Guido van Rossum3fc9d731995-07-25 15:10:56 +00001169
Guido van Rossum0d20cfa1996-07-30 18:53:05 +00001170- (The Fresco port that was mentioned in earlier versions of this FAQ
1171no longer seems to exist. Inquire with Mark Linton.)
Guido van Rossuma8a8d4a1995-03-10 16:19:31 +00001172
Guido van Rossum061f1821994-10-06 16:03:45 +000011734.14. Q. Are there any interfaces to database packages in Python?
Guido van Rossum7ce61c11994-06-13 15:13:56 +00001174
Guido van Rossum8727df41996-09-09 15:16:39 +00001175A. There's a whole collection of them in the contrib area of the ftp
1176server, see <URL:http://www.python.org/ftp/python/contrib/Database/>.
Guido van Rossum796b2591995-01-20 23:05:52 +00001177
Guido van Rossumb34e8aa1994-09-23 14:20:38 +000011784.15. Q. Is it possible to write obfuscated one-liners in Python?
Guido van Rossumc24da7c1994-09-23 14:08:41 +00001179
1180A. Yes. See the following three examples, due to Ulf Bartelt:
1181
Guido van Rossuma6c707c1995-01-02 17:32:28 +00001182 # Primes < 1000
1183 print filter(None,map(lambda y:y*reduce(lambda x,y:x*y!=0,
1184 map(lambda x,y=y:y%x,range(2,int(pow(y,0.5)+1))),1),range(2,1000)))
Guido van Rossumc24da7c1994-09-23 14:08:41 +00001185
Guido van Rossuma6c707c1995-01-02 17:32:28 +00001186 # First 10 Fibonacci numbers
1187 print map(lambda x,f=lambda x,f:(x<=1) or (f(x-1,f)+f(x-2,f)): f(x,f),
1188 range(10))
Guido van Rossumc24da7c1994-09-23 14:08:41 +00001189
Guido van Rossuma6c707c1995-01-02 17:32:28 +00001190 # Mandelbrot set
1191 print (lambda Ru,Ro,Iu,Io,IM,Sx,Sy:reduce(lambda x,y:x+y,map(lambda y,
1192 Iu=Iu,Io=Io,Ru=Ru,Ro=Ro,Sy=Sy,L=lambda yc,Iu=Iu,Io=Io,Ru=Ru,Ro=Ro,i=IM,
1193 Sx=Sx,Sy=Sy:reduce(lambda x,y:x+y,map(lambda x,xc=Ru,yc=yc,Ru=Ru,Ro=Ro,
1194 i=i,Sx=Sx,F=lambda xc,yc,x,y,k,f=lambda xc,yc,x,y,k,f:(k<=0)or (x*x+y*y
1195 >=4.0) or 1+f(xc,yc,x*x-y*y+xc,2.0*x*y+yc,k-1,f):f(xc,yc,x,y,k,f):chr(
1196 64+F(Ru+x*(Ro-Ru)/Sx,yc,0,0,i)),range(Sx))):L(Iu+y*(Io-Iu)/Sy),range(Sy
1197 ))))(-2.1, 0.7, -1.2, 1.2, 30, 80, 24)
1198 # \___ ___/ \___ ___/ | | |__ lines on screen
1199 # V V | |______ columns on screen
1200 # | | |__________ maximum of "iterations"
1201 # | |_________________ range on y axis
1202 # |____________________________ range on x axis
Guido van Rossumc24da7c1994-09-23 14:08:41 +00001203
1204Don't try this at home, kids!
1205
Guido van Rossumb34e8aa1994-09-23 14:20:38 +000012064.16. Q. Is there an equivalent of C's "?:" ternary operator?
Guido van Rossumc24da7c1994-09-23 14:08:41 +00001207
Guido van Rossumb34e8aa1994-09-23 14:20:38 +00001208A. Not directly. In many cases you can mimic a?b:c with "a and b or
1209c", but there's a flaw: if b is zero (or empty, or None -- anything
1210that tests false) then c will be selected instead. In many cases you
1211can prove by looking at the code that this can't happen (e.g. because
1212b is a constant or has a type that can never be false), but in general
1213this can be a problem.
1214
Guido van Rossumc458e941996-09-11 15:43:13 +00001215Tim Peters (who wishes it was Steve Majewski) suggested the following
Guido van Rossumb34e8aa1994-09-23 14:20:38 +00001216solution: (a and [b] or [c])[0]. Because [b] is a singleton list it
1217is never false, so the wrong path is never taken; then applying [0] to
1218the whole thing gets the b or c that you really wanted. Ugly, but it
1219gets you there in the rare cases where it is really inconvenient to
1220rewrite your code using 'if'.
1221
12224.17. Q. My class defines __del__ but it is not called when I delete the
1223object.
1224
1225A. There are several possible reasons for this.
1226
1227- The del statement does not necessarily call __del__ -- it simply
1228decrements the object's reference count, and if this reaches zero
1229__del__ is called.
1230
1231- If your data structures contain circular links (e.g. a tree where
1232each child has a parent pointer and each parent has a list of
1233children) the reference counts will never go back to zero. You'll
Guido van Rossum061f1821994-10-06 16:03:45 +00001234have to define an explicit close() method which removes those
Guido van Rossumb34e8aa1994-09-23 14:20:38 +00001235pointers. Please don't ever call __del__ directly -- __del__ should
Guido van Rossum061f1821994-10-06 16:03:45 +00001236call close() and close() should make sure that it can be called more
Guido van Rossumb34e8aa1994-09-23 14:20:38 +00001237than once for the same object.
1238
1239- If the object has ever been a local variable (or argument, which is
1240really the same thing) to a function that caught an expression in an
1241except clause, chances are that a reference to the object still exists
1242in that function's stack frame as contained in the stack trace.
1243Normally, deleting (better: assigning None to) sys.exc_traceback will
1244take care of this. If you a stack was printed for an unhandled
1245exception in an interactive interpreter, delete sys.last_traceback
1246instead.
1247
1248- There is code that deletes all objects when the interpreter exits,
1249but if your Python has been configured to support threads, it is not
1250called (because other threads may still be active). You can define
Guido van Rossum061f1821994-10-06 16:03:45 +00001251your own cleanup function using sys.exitfunc (see question 4.4).
Guido van Rossumb34e8aa1994-09-23 14:20:38 +00001252
Guido van Rossum8727df41996-09-09 15:16:39 +00001253- Finally, if your __del__ method raises an exception, this will be
1254ignored. Starting with Python 1.4beta3, a warning message is printed
1255to sys.stderr when this happens.
Guido van Rossuma6c707c1995-01-02 17:32:28 +00001256
12574.18. Q. How do I change the shell environment for programs called
1258using os.popen() or os.system()? Changing os.environ doesn't work.
Guido van Rossumb34e8aa1994-09-23 14:20:38 +00001259
1260A. Modifying the environment passed to subshells was left out of the
1261interpreter because there seemed to be no well-established portable
Guido van Rossuma6c707c1995-01-02 17:32:28 +00001262way to do it (in particular, some systems, have putenv(), others have
1263setenv(), and some have none at all).
Guido van Rossumb34e8aa1994-09-23 14:20:38 +00001264
1265However if all you want is to pass environment variables to the
1266commands run by os.system() or os.popen(), there's a simple solution:
1267prefix the command string with a couple of variable assignments and
Guido van Rossum796b2591995-01-20 23:05:52 +00001268export statements. The following would be universal for popen:
Guido van Rossumb34e8aa1994-09-23 14:20:38 +00001269
Guido van Rossuma6c707c1995-01-02 17:32:28 +00001270 import os
1271 from commands import mkarg # nifty routine to add shell quoting
1272 def epopen(cmd, mode, env = {}):
1273 # env is a dictionary of environment variables
1274 prefix = ''
Guido van Rossum796b2591995-01-20 23:05:52 +00001275 for key, value in env.items():
1276 prefix = prefix + '%s=%s\n' % (key, mkarg(value)[1:])
Guido van Rossuma6c707c1995-01-02 17:32:28 +00001277 prefix = prefix + 'export %s\n' % key
1278 return os.popen(prefix + cmd, mode)
Guido van Rossumb34e8aa1994-09-23 14:20:38 +00001279
12804.19. Q. What is a class?
1281
1282A. A class is the particular object type that is created by executing
Guido van Rossum796b2591995-01-20 23:05:52 +00001283a class statement. Class objects are used as templates, to create
1284class instance objects, which embody both the data structure and
1285program routines specific to a datatype.
Guido van Rossumb34e8aa1994-09-23 14:20:38 +00001286
12874.20. Q. What is a method?
1288
1289A. A method is a function that you normally call as
Guido van Rossum796b2591995-01-20 23:05:52 +00001290x.name(arguments...) for some object x. The term is used for methods
Guido van Rossumb34e8aa1994-09-23 14:20:38 +00001291of classes and class instances as well as for methods of built-in
Guido van Rossum796b2591995-01-20 23:05:52 +00001292objects. (The latter have a completely different implementation and
1293only share the way their calls look in Python code.) Methods of
1294classes (and class instances) are defined as functions inside the
1295class definition.
Guido van Rossumb34e8aa1994-09-23 14:20:38 +00001296
12974.21. Q. What is self?
1298
1299A. Self is merely a conventional name for the first argument of a
1300method -- i.e. a function defined inside a class definition. A method
1301defined as meth(self, a, b, c) should be called as x.meth(a, b, c) for
1302some instance x of the class in which the definition occurs;
1303the called method will think it is called as meth(x, a, b, c).
1304
13054.22. Q. What is a unbound method?
1306
1307A. An unbound method is a method defined in a class that is not yet
1308bound to an instance. You get an unbound method if you ask for a
1309class attribute that happens to be a function. You get a bound method
1310if you ask for an instance attribute. A bound method knows which
Guido van Rossum061f1821994-10-06 16:03:45 +00001311instance it belongs to and calling it supplies the instance automatically;
Guido van Rossumb34e8aa1994-09-23 14:20:38 +00001312an unbound method only knows which class it wants for its first
1313argument (a derived class is also OK). Calling an unbound method
1314doesn't "magically" derive the first argument from the context -- you
1315have to provide it explicitly.
1316
Guido van Rossuma6c707c1995-01-02 17:32:28 +000013174.23. Q. How do I call a method defined in a base class from a derived
1318class that overrides it?
Guido van Rossumb34e8aa1994-09-23 14:20:38 +00001319
1320A. If your class definition starts with "class Derived(Base): ..."
1321then you can call method meth defined in Base (or one of Base's base
1322classes) as Base.meth(self, arguments...). Here, Base.meth is an
1323unbound method (see previous question).
1324
Guido van Rossuma6c707c1995-01-02 17:32:28 +000013254.24. Q. How do I call a method from a base class without using the
1326name of the base class?
Guido van Rossumb34e8aa1994-09-23 14:20:38 +00001327
1328A. DON'T DO THIS. REALLY. I MEAN IT. It appears that you could call
1329self.__class__.__bases__[0].meth(self, arguments...) but this fails when
Guido van Rossum061f1821994-10-06 16:03:45 +00001330a doubly-derived method is derived from your class: for its instances,
Guido van Rossumb34e8aa1994-09-23 14:20:38 +00001331self.__class__.__bases__[0] is your class, not its base class -- so
1332(assuming you are doing this from within Derived.meth) you would start
1333a recursive call.
1334
13354.25. Q. How can I organize my code to make it easier to change the base
1336class?
1337
1338A. You could define an alias for the base class, assign the real base
1339class to it before your class definition, and use the alias throughout
1340your class. Then all you have to change is the value assigned to the
1341alias. Incidentally, this trick is also handy if you want to decide
1342dynamically (e.g. depending on availability of resources) which base
1343class to use. Example:
1344
Guido van Rossumc458e941996-09-11 15:43:13 +00001345 BaseAlias = <real base class>
1346 class Derived(BaseAlias):
1347 def meth(self):
1348 BaseAlias.meth(self)
1349 ...
Guido van Rossumb34e8aa1994-09-23 14:20:38 +00001350
13514.26. Q. How can I find the methods or attributes of an object?
1352
1353A. This depends on the object type.
1354
1355For an instance x of a user-defined class, instance attributes are
1356found in the dictionary x.__dict__, and methods and attributes defined
1357by its class are found in x.__class__.__bases__[i].__dict__ (for i in
1358range(len(x.__class__.__bases__))). You'll have to walk the tree of
1359base classes to find *all* class methods and attributes.
1360
1361Many, but not all built-in types define a list of their method names
1362in x.__methods__, and if they have data attributes, their names may be
1363found in x.__members__. However this is only a convention.
1364
1365For more information, read the source of the standard (but
1366undocumented) module newdir.
1367
13684.27. Q. I can't seem to use os.read() on a pipe created with os.popen().
1369
1370A. os.read() is a low-level function which takes a file descriptor (a
1371small integer). os.popen() creates a high-level file object -- the
1372same type used for sys.std{in,out,err} and returned by the builtin
1373open() function. Thus, to read n bytes from a pipe p created with
1374os.popen(), you need to use p.read(n).
Guido van Rossuma7925f11994-01-26 10:20:16 +00001375
Guido van Rossum061f1821994-10-06 16:03:45 +000013764.28. Q. How can I create a stand-alone binary from a Python script?
1377
1378The demo script "Demo/scripts/freeze.py" does what you want. (It's
1379actually not a demo but a support tool -- there is some extra code in
1380the interpreter to accommodate it.) It requires that you have the
1381Python build tree handy, complete with all the lib*.a files.
1382
1383This works by scanning your source recursively for import statements
1384(both forms) and looking for the modules on the standard Python path
1385as well as in the source directory (for built-in modules). It then
1386"compiles" the modules written in Python to C code (array initializers
1387that can be turned into code objects using the marshal module) and
1388creates a custom-made config file that only contains those built-in
1389modules which are actually used in the program. It then compiles the
1390generated C code and links it with the rest of the Python interpreter
1391to form a self-contained binary which acts exactly like your script.
1392
Guido van Rossum7be34a81995-05-31 15:17:12 +00001393Hint: the freeze program only works if your script's filename ends in
1394".py".
Guido van Rossum061f1821994-10-06 16:03:45 +00001395
Guido van Rossum7be34a81995-05-31 15:17:12 +000013964.29. Q. What WWW tools are there for Python?
Guido van Rossum061f1821994-10-06 16:03:45 +00001397
Guido van Rossum8727df41996-09-09 15:16:39 +00001398A. See the chapter titled "Internet and WWW" in the Library Reference
1399Manual. There's also a web browser written in Python, called Grail --
1400see <URL:http://monty.cnri.reston.va.us/grail/>.
Guido van Rossum061f1821994-10-06 16:03:45 +00001401
1402Steve Miale <smiale@cs.indiana.edu> has written a modular WWW browser
1403called Dancer. An alpha version can be FTP'ed from
Guido van Rossuma6c707c1995-01-02 17:32:28 +00001404<URL:ftp://ftp.cs.indiana.edu/pub/smiale/dancer.tar.gz>. (There are a
1405few articles about Dancer in the (hyper)mail archive
1406<URL:http://www.cwi.nl/~guido/hypermail/python-1994q3/index.html>.)
Guido van Rossum061f1821994-10-06 16:03:45 +00001407
Guido van Rossum7be34a81995-05-31 15:17:12 +000014084.30. Q. How do I run a subprocess with pipes connected to both input
Guido van Rossum796b2591995-01-20 23:05:52 +00001409and output?
1410
1411A. This is really a UNIX question. Also, in general, it is unwise to
1412do so, because you can easily cause a deadlock where the parent
1413process is blocked waiting for output from the child, while the child
1414is blocked waiting for input from the child. This can be caused
1415because the parent expects the child to output more text than it does,
1416or it can be caused by data being stuck in stdio buffers due to lack
1417of flushing. The Python parent can of course explicitly flush the data
1418it sends to the child before it reads any output, but if the child is
1419a naive C program it can easily have been written to never explicitly
1420flush its output, even if it is interactive, since flushing is
1421normally automatic.
1422
1423In many cases, all you really need is to run some data through a
1424command and get the result back. Unless the data is infinite in size,
1425the easiest (and often the most efficient!) way to do this is to write
1426it to a temporary file and run the command with that temporary file as
1427input. The standard module tempfile exports a function mktemp() which
1428generates unique temporary file names.
1429
1430If after reading all of the above you still want to connect two pipes
1431to a subprocess's standard input and output, here's a simple solution,
1432due to Jack Jansen:
1433
Guido van Rossume7d92d51995-10-11 18:06:54 +00001434 import os
1435 import sys
1436 import string
Guido van Rossum796b2591995-01-20 23:05:52 +00001437
Guido van Rossume7d92d51995-10-11 18:06:54 +00001438 MAXFD = 100 # Max number of file descriptors in this system
Guido van Rossum796b2591995-01-20 23:05:52 +00001439
Guido van Rossume7d92d51995-10-11 18:06:54 +00001440 def popen2(cmd):
1441 cmd = string.split(cmd)
1442 p2cread, p2cwrite = os.pipe()
1443 c2pread, c2pwrite = os.pipe()
1444 pid = os.fork()
1445 if pid == 0:
1446 # Child
1447 os.close(0)
1448 os.close(1)
Guido van Rossumca318ec1996-06-26 19:50:09 +00001449 if os.dup(p2cread) != 0:
Guido van Rossume7d92d51995-10-11 18:06:54 +00001450 sys.stderr.write('popen2: bad read dup\n')
Guido van Rossumca318ec1996-06-26 19:50:09 +00001451 if os.dup(c2pwrite) != 1:
Guido van Rossume7d92d51995-10-11 18:06:54 +00001452 sys.stderr.write('popen2: bad write dup\n')
1453 for i in range(3, MAXFD):
1454 try:
1455 os.close(i)
1456 except:
1457 pass
1458 try:
1459 os.execv(cmd[0], cmd)
1460 finally:
1461 os._exit(1)
1462 os.close(p2cread)
1463 tochild = os.fdopen(p2cwrite, 'w')
1464 os.close(c2pwrite)
1465 fromchild = os.fdopen(c2pread, 'r')
1466 return fromchild, tochild
Guido van Rossum796b2591995-01-20 23:05:52 +00001467
1468Note that many interactive programs (e.g. vi) don't work well with
1469pipes substituted for standard input and output. You will have to use
1470pseudo ttys ("ptys") instead of pipes. There is some undocumented
1471code to use these in the library module pty.py -- I'm afraid you're on
Guido van Rossum3fc9d731995-07-25 15:10:56 +00001472your own here.
1473
1474A different answer is a Python interface to Don Libes' "expect"
1475library. A prerelease of this is available on the Python ftp mirror
1476sites in the contrib subdirectory as expy-0.3.tar.gz, e.g.
1477<URL:ftp://ftp.python.org/pub/python/contrib/expy-0.3.tar.gz>.
Guido van Rossum796b2591995-01-20 23:05:52 +00001478
Guido van Rossum7be34a81995-05-31 15:17:12 +000014794.31. Q. How do I call a function if I have the arguments in a tuple?
Guido van Rossumac3f2121995-04-10 11:53:42 +00001480
1481A. Use the built-in function apply(). For instance,
1482
1483 func(1, 2, 3)
1484
1485is equivalent to
1486
1487 args = (1, 2, 3)
1488 apply(func, args)
1489
1490Note that func(args) is not the same -- it calls func() with exactly
1491one argument, the tuple args, instead of three arguments, the integers
14921, 2 and 3.
1493
Guido van Rossum7be34a81995-05-31 15:17:12 +000014944.32. Q. How do I enable font-lock-mode for Python in Emacs?
1495
1496A. Assuming you're already using python-mode and font-lock-mode
1497separately, all you need to do is put this in your .emacs file:
1498
Guido van Rossume7d92d51995-10-11 18:06:54 +00001499 (defun my-python-mode-hook ()
1500 (setq font-lock-keywords python-font-lock-keywords)
1501 (font-lock-mode 1))
1502 (add-hook 'python-mode-hook 'my-python-mode-hook)
Guido van Rossum7be34a81995-05-31 15:17:12 +00001503
15044.33. Q. Is there an inverse to the format operator (a la C's scanf())?
1505
1506A. Not as such.
1507
1508For simple input parsing, the easiest approach is usually to split
1509the line into whitespace-delimited words using string.split(), and to
1510convert decimal strings to numeric values using string.atoi(),
1511string.atol() or string.atof(). (Python's atoi() is 32-bit and its
1512atol() is arbitrary precision.) If you want to use another delimiter
1513than whitespace, use string.splitfield() (possibly combining it with
1514string.strip() which removes surrounding whitespace from a string).
1515
1516For more complicated input parsing, regular expressions (see module
1517regex) are better suited and more powerful than C's scanf().
1518
Guido van Rossumca318ec1996-06-26 19:50:09 +000015194.34. Q. Can I have Tk events handled while waiting for I/O?
1520
1521A. Yes, and you don't even need threads! But you'll have to
1522restructure your I/O code a bit. Tk has the equivalent of Xt's
1523XtAddInput() call, which allows you to register a callback function
1524which will be called from the Tk mainloop when I/O is possible on a
1525file descriptor. Here's what you need:
1526
Guido van Rossumc458e941996-09-11 15:43:13 +00001527 from Tkinter import tkinter
1528 tkinter.createfilehandler(file, mask, callback)
Guido van Rossumca318ec1996-06-26 19:50:09 +00001529
1530The file may be a Python file or socket object (actually, anything
1531with a fileno() method), or an integer file descriptor. The mask is
1532one of the constants tkinter.READABLE or tkinter.WRITABLE. The
1533callback is called as follows:
1534
Guido van Rossumc458e941996-09-11 15:43:13 +00001535 callback(file, mask)
Guido van Rossumca318ec1996-06-26 19:50:09 +00001536
1537You must unregister the callback when you're done, using
1538
Guido van Rossumc458e941996-09-11 15:43:13 +00001539 tkinter.deletefilehandler(file)
Guido van Rossumca318ec1996-06-26 19:50:09 +00001540
1541Note: since you don't know *how many bytes* are available for reading,
1542you can't use the Python file object's read or readline methods, since
1543these will insist on reading a predefined number of bytes. For
1544sockets, the recv() or recvfrom() methods will work fine; for other
1545files, use os.read(file.fileno(), maxbytecount).
1546
15474.35. Q. How do I write a function with output parameters (call by reference)?
1548
1549A. [Mark Lutz] The thing to remember is that arguments are passed by
1550assignment in Python. Since assignment just creates references to
1551objects, there's no alias between an argument name in the caller and
1552callee, and so no call-by-reference per se. But you can simulate it
1553in a number of ways:
1554
15551) By using global variables; but you probably shouldn't :-)
1556
15572) By passing a mutable (changeable in-place) object:
1558
1559 def func1(a):
1560 a[0] = 'new-value' # 'a' references a mutable list
1561 a[1] = a[1] + 1 # changes a shared object
1562
1563 args = ['old-value', 99]
1564 func1(args)
1565 print args[0], args[1] # output: new-value 100
1566
15673) By return a tuple, holding the final values of arguments:
1568
1569 def func2(a, b):
1570 a = 'new-value' # a and b are local names
1571 b = b + 1 # assigned to new objects
1572 return a, b # return new values
1573
1574 x, y = 'old-value', 99
1575 x, y = func2(x, y)
1576 print x, y # output: new-value 100
1577
15784) And other ideas that fall-out from Python's object model. For
1579 instance, it might be clearer to pass in a mutable dictionary:
1580
1581 def func3(args):
1582 args['a'] = 'new-value' # args is a mutable dictionary
1583 args['b'] = args['b'] + 1 # change it in-place
1584
1585 args = {'a':' old-value', 'b': 99}
1586 func3(args)
1587 print args['a'], args['b']
1588
15895) Or bundle-up values in a class instance:
1590
1591 class callByRef:
1592 def __init__(self, **args):
1593 for (key, value) in args.items():
1594 setattr(self, key, value)
1595
1596 def func4(args):
1597 args.a = 'new-value' # args is a mutable callByRef
1598 args.b = args.b + 1 # change object in-place
1599
1600 args = callByRef(a='old-value', b=99)
1601 func4(args)
1602 print args.a, args.b
1603
1604 But there's probably no good reason to get this complicated :-).
1605
1606[Python' author favors solution 3 in most cases.]
1607
Guido van Rossum0d20cfa1996-07-30 18:53:05 +000016084.36. Q. Please explain the rules for local and global variables in Python.
1609
1610A. [Ken Manheimer] In Python, procedure variables are implicitly
1611global, unless they assigned anywhere within the block. In that case
1612they are implicitly local, and you need to explicitly declare them as
1613'global'.
1614
1615Though a bit surprising at first, a moments consideration explains
1616this. On one hand, requirement of 'global' for assigned vars provides
1617a bar against unintended side-effects. On the other hand, if global
1618were required for all global references, you'd be using global all the
1619time. Eg, you'd have to declare as global every reference to a
1620builtin function, or to a component of an imported module. This
1621clutter would defeat the usefulness of the 'global' declaration for
1622identifying side-effects.
1623
16244.37. Q. How can I have modules that mutually import each other?
1625
1626A. Jim Roskind recommends the following order in each module:
1627
1628First: all exports (like globals, functions, and classes that don't
1629need imported bases classes).
1630
1631Then: all import statements.
1632
1633Finally: all active code (including globals that are initialized from
1634imported values).
1635
1636Python's author doesn't like this approach much because the imports
1637appear in a strange place, but has to admit that it works. His
1638recommended strategy is to avoid all uses of "from <module> import *"
1639(so everything from an imported module is referenced as
1640<module>.<name>) and to place all code inside functions.
1641Initializations of global variables and class variables should use
1642constants or built-in functions only.
1643
Guido van Rossum8727df41996-09-09 15:16:39 +000016444.38. Q. How do I copy an object in Python?
1645
1646A. There is no generic copying operation built into Python, however
1647most object types have some way to create a clone. Here's how for the
1648most common objects:
1649
1650- For immutable objects (numbers, strings, tuples), cloning is
1651unnecessary since their value can't change.
1652
1653- For lists (and generally for mutable sequence types), a clone is
1654created by the expression l[:].
1655
1656- For dictionaries, the following function returns a clone:
1657
Guido van Rossumc458e941996-09-11 15:43:13 +00001658 def dictclone(o):
1659 n = {}
1660 for k in o.keys(): n[k] = o[k]
1661 return n
Guido van Rossum8727df41996-09-09 15:16:39 +00001662
1663- Finally, for generic objects, the "copy" module defines two
1664functions for copying objects. copy.copy(x) returns a copy as shown
1665by the above rules. copy.deepcopy(x) also copies the elements of
1666composite objects. See the section on this module in the Library
1667Reference Manual.
1668
16694.39. Q. How to implement persistent objects in Python? (Persistent ==
1670automatically saved to and restored from disk.)
1671
1672A. The library module "pickle" now solves this in a very general way
1673(though you still can't store things like open files, sockests or
1674windows), and the library module "shelve" uses pickle and (g)dbm to
1675create presistent mappings containing arbitrary Python objects.
1676
Guido van Rossum061f1821994-10-06 16:03:45 +00001677
Guido van Rossuma7925f11994-01-26 10:20:16 +000016785. Extending Python
1679===================
1680
16815.1. Q. Can I create my own functions in C?
1682
1683A. Yes, you can create built-in modules containing functions,
Guido van Rossum24349991994-02-02 14:12:45 +00001684variables, exceptions and even new types in C. This is explained in
1685the document "Extending and Embedding the Python Interpreter" (the
1686LaTeX file Doc/ext.tex). Also read the chapter on dynamic loading.
Guido van Rossuma7925f11994-01-26 10:20:16 +00001687
16885.2. Q. Can I create my own functions in C++?
1689
1690A. Yes, using the C-compatibility features found in C++. Basically
1691you place extern "C" { ... } around the Python include files and put
1692extern "C" before each function that is going to be called by the
1693Python interpreter. Global or static C++ objects with constructors
1694are probably not a good idea.
1695
Guido van Rossum7ce61c11994-06-13 15:13:56 +000016965.3. Q. How can I execute arbitrary Python statements from C?
1697
1698A. The highest-level function to do this is run_command() which takes
1699a single string argument which is executed in the context of module
1700__main__ and returns 0 for success and -1 when an exception occurred
1701(including SyntaxError). If you want more control, use run_string();
1702see the source for run_command() in Python/pythonrun.c.
1703
17045.4. Q. How can I evaluate an arbitrary Python expression from C?
1705
1706A. Call the function run_string() from the previous question with the
1707start symbol eval_input; it then parses an expression, evaluates it
1708and returns its value. See exec_eval() in Python/bltinmodule.c.
1709
17105.5. Q. How do I extract C values from a Python object?
1711
1712A. That depends on the object's type. If it's a tuple,
1713gettuplesize(o) returns its length and gettupleitem(o, i) returns its
1714i'th item; similar for lists with getlistsize(o) and getlistitem(o,
1715i). For strings, getstringsize(o) returns its length and
1716getstringvalue(o) a pointer to its value (note that Python strings may
1717contain null bytes so strlen() is not safe). To test which type an
1718object is, first make sure it isn't NULL, and then use
1719is_stringobject(o), is_tupleobject(o), is_listobject(o) etc.
1720
17215.6. Q. How do I use mkvalue() to create a tuple of arbitrary length?
1722
1723A. You can't. Use t = newtupleobject(n) instead, and fill it with
1724objects using settupleitem(t, i, o) -- note that this "eats" a
1725reference count of o. Similar for lists with newlistobject(n) and
Guido van Rossumb34e8aa1994-09-23 14:20:38 +00001726setlistitem(l, i, o). Note that you *must* set all the tuple items to
1727some value before you pass the tuple to Python code --
1728newtupleobject(n) initializes them to NULL, which isn't a valid Python
1729value.
1730
Guido van Rossum8727df41996-09-09 15:16:39 +000017315.7. Q. How do I call an object's method from C?
Guido van Rossumb34e8aa1994-09-23 14:20:38 +00001732
1733A. Here's a function (untested) that might become part of the next
1734release in some form. It uses <stdarg.h> to allow passing the
1735argument list on to vmkvalue():
1736
Guido van Rossuma6c707c1995-01-02 17:32:28 +00001737 object *call_method(object *inst, char *methodname, char *format, ...)
1738 {
1739 object *method;
1740 object *args;
1741 object *result;
1742 va_list va;
1743 method = getattr(inst, methodname);
1744 if (method == NULL) return NULL;
1745 va_start(va, format);
1746 args = vmkvalue(format, va);
1747 va_end(va);
1748 if (args == NULL) {
1749 DECREF(method);
1750 return NULL;
1751 }
1752 result = call_object(method, args);
1753 DECREF(method);
1754 DECREF(args);
1755 return result;
1756 }
Guido van Rossumb34e8aa1994-09-23 14:20:38 +00001757
1758This works for any instance that has methods -- whether built-in or
1759user-defined. You are responsible for eventually DECREF'ing the
1760return value.
1761
1762To call, e.g., a file object's "seek" method with arguments 10, 0
1763(assuming the file object pointer is "f"):
1764
Guido van Rossuma6c707c1995-01-02 17:32:28 +00001765 res = call_method(f, "seek", "(OO)", 10, 0);
1766 if (res == NULL) {
1767 ... an exception occurred ...
1768 }
1769 else {
1770 DECREF(res);
1771 }
Guido van Rossumb34e8aa1994-09-23 14:20:38 +00001772
1773Note that since call_object() *always* wants a tuple for the argument
1774list, to call a function without arguments, pass "()" for the format,
1775and to call a function with one argument, surround the argument in
1776parentheses, e.g. "(i)".
1777
Guido van Rossum8727df41996-09-09 15:16:39 +000017785.8. Q. How do I catch the output from print_error()?
Guido van Rossumb34e8aa1994-09-23 14:20:38 +00001779
1780A. (Due to Mark Hammond):
1781
1782* in Python code, define an object that supports the "write()" method.
Guido van Rossumb34e8aa1994-09-23 14:20:38 +00001783
1784* redirect sys.stdout and sys.stderr to this object.
1785
Guido van Rossum061f1821994-10-06 16:03:45 +00001786* call print_error, or just allow the standard traceback mechanism to
Guido van Rossumb34e8aa1994-09-23 14:20:38 +00001787work.
1788
Guido van Rossum061f1821994-10-06 16:03:45 +00001789Then, the output will go wherever your write() method sends it.
Guido van Rossumb34e8aa1994-09-23 14:20:38 +00001790
Guido van Rossum8727df41996-09-09 15:16:39 +000017915.9. Q. How do I access a module written in Python from C?
Guido van Rossumb34e8aa1994-09-23 14:20:38 +00001792
1793A. You can get a pointer to the module object as follows:
1794
Guido van Rossuma6c707c1995-01-02 17:32:28 +00001795 module = import_module("<modulename>");
Guido van Rossumb34e8aa1994-09-23 14:20:38 +00001796
1797If the module hasn't been imported yet (i.e. it is not yet present in
1798sys.modules), this initializes the module; otherwise it simply returns
1799the value of sys.modules["<modulename>"]. Note that it doesn't enter
1800the module into any namespace -- it only ensures it has been
1801initialized and is stored in sys.modules.
1802
1803You can then access the module's attributes (i.e. any name defined in
1804the module) as follows:
1805
Guido van Rossuma6c707c1995-01-02 17:32:28 +00001806 attr = getattr(module, "<attrname>");
Guido van Rossumb34e8aa1994-09-23 14:20:38 +00001807
1808Calling setattr(), to assign to variables in the module, also works.
Guido van Rossum7ce61c11994-06-13 15:13:56 +00001809
Guido van Rossum8727df41996-09-09 15:16:39 +000018105.10. Q. How do I interface to C++ objects from Python?
Guido van Rossumb0a2ce51995-08-28 19:41:35 +00001811
1812A. Depending on your requirements, there are many approaches. Begin
1813by reading the "Extending and Embedding" document (Doc/ext.tex, see
1814also <URL:http://www.python.org/doc/>). Realize that for the Python
1815run-time system, there isn't a whole lot of difference between C and
1816C++ -- so the strategy to build a new Python type around a C structure
1817(pointer) type will also work for C++ objects.
1818
1819Automatic generation of interfaces between Python and C++ is still at
1820the horizon -- parsing C++ header files requires an almost complete
1821C++ parser, and many features aren't easily translated from C++ to
1822Python: certain forms of operator oveloading, function overloading
1823(best approached by a varargs function which explicitly type-checks
1824its arguments), and reference arguments are just a number of features
1825that are hard to translate correctly if at all.
1826
1827The hardest problem is to transparently translate the C++ class
1828hierarchy to Python, so that Python programs derive classes from C++
1829classes. Given suitable constraints, this may be possible, but it
1830would require more space than I have in this FAQ to explain how.
1831In any case, you can get quite a bit done without this, using just the
1832existing classes from Python.
1833
1834If this all seems rather daunting, that may be because it is -- C++
1835isn't exactly a baby to handle without gloves! However, people have
1836accomplished amazing feats of interfacing between Python and C++, and
1837a detailed question posted to the Python list is likely to elicit some
1838interesting and useful responses.
1839
Guido van Rossuma7925f11994-01-26 10:20:16 +00001840
18416. Python's design
1842==================
1843
Guido van Rossum8727df41996-09-09 15:16:39 +000018446.1. Q. Why isn't there a switch or case statement in Python?
Guido van Rossuma7925f11994-01-26 10:20:16 +00001845
1846A. You can do this easily enough with a sequence of
1847if... elif... elif... else. There have been some proposals for switch
Guido van Rossum061f1821994-10-06 16:03:45 +00001848statement syntax, but there is no consensus (yet) on whether and how
Guido van Rossuma7925f11994-01-26 10:20:16 +00001849to do range tests.
1850
Guido van Rossum8727df41996-09-09 15:16:39 +000018516.2. Q. Why does Python use indentation for grouping of statements?
Guido van Rossumc50158e1994-05-31 09:18:50 +00001852
1853A. Basically I believe that using indentation for grouping is
1854extremely elegant and contributes a lot to the clarity of the average
1855Python program. Most people learn to love this feature after a while.
1856Some arguments for it:
1857
1858- Since there are no begin/end brackets there cannot be a disagreement
1859between grouping perceived by the parser and the human reader. I
1860remember long ago seeing a C fragment like this:
1861
Guido van Rossuma6c707c1995-01-02 17:32:28 +00001862 if (x <= y)
1863 x++;
1864 y--;
1865 z++;
Guido van Rossumc50158e1994-05-31 09:18:50 +00001866
1867and staring a long time at it wondering why y was being decremented
1868even for x > y... (And I wasn't a C newbie then either.)
1869
Guido van Rossum7be34a81995-05-31 15:17:12 +00001870- Since there are no begin/end brackets, Python is much less prone to
1871coding-style conflicts. In C there are loads of different ways to
1872place the braces (including the choice whether to place braces around
1873single statements in certain cases, for consistency). If you're used
1874to reading (and writing) code that uses one style, you will feel at
1875least slightly uneasy when reading (or being required to write)
1876another style.
Guido van Rossumc50158e1994-05-31 09:18:50 +00001877
1878- Many coding styles place begin/end brackets on a line by themself.
1879This makes programs considerably longer and wastes valuable screen
1880space, making it harder to get a good overview over a program.
1881Ideally, a function should fit on one basic tty screen (say, 20
1882lines). 20 lines of Python are worth a LOT more than 20 lines of C.
1883This is not solely due to the lack of begin/end brackets (the lack of
1884declarations also helps, and the powerful operations of course), but
1885it certainly helps!
1886
Guido van Rossum8727df41996-09-09 15:16:39 +000018876.3. Q. Why are Python strings immutable?
Guido van Rossum3de27361994-07-25 14:19:33 +00001888
1889A. There are two advantages. One is performance: knowing that a
1890string is immutable makes it easy to lay it out at construction time
1891-- fixed and unchanging storage requirements. (This is also one of
Guido van Rossum061f1821994-10-06 16:03:45 +00001892the reasons for the distinction between tuples and lists.) The
Guido van Rossum3de27361994-07-25 14:19:33 +00001893other is that strings in Python are considered as "elemental" as
1894numbers. No amount of activity will change the value 8 to anything
1895else, and in Python, no amount of activity will change the string
1896"eight" to anything else. (Adapted from Jim Roskind)
1897
Guido van Rossum8727df41996-09-09 15:16:39 +000018986.4. Q. Why don't strings have methods like index() or sort(), like
Guido van Rossum3de27361994-07-25 14:19:33 +00001899lists?
1900
1901A. Good question. Strings currently don't have methods at all
1902(likewise tuples and numbers). Long ago, it seemed unnecessary to
1903implement any of these functions in C, so a standard library module
1904"string" written in Python was created that performs string related
1905operations. Since then, the cry for performance has moved most of
1906them into the built-in module strop (this is imported by module
Guido van Rossumf8c76d01994-08-17 12:19:53 +00001907string, which is still the preferred interface, without loss of
Guido van Rossum3de27361994-07-25 14:19:33 +00001908performance except during initialization). Some of these functions
1909(e.g. index()) could easily be implemented as string methods instead,
1910but others (e.g. sort()) can't, since their interface prescribes that
1911they modify the object, while strings are immutable (see the previous
1912question).
1913
Guido van Rossum8727df41996-09-09 15:16:39 +000019146.5. Q. Why does Python use methods for some functionality
Guido van Rossum3de27361994-07-25 14:19:33 +00001915(e.g. list.index()) but functions for other (e.g. len(list))?
1916
1917A. Functions are used for those operations that are generic for a
1918group of types and which should work even for objects that don't have
1919methods at all (e.g. numbers, strings, tuples). Also, implementing
1920len(), max(), min() as a built-in function is actually less code than
1921implementing them as methods for each type. One can quibble about
1922individual cases but it's really too late to change such things
1923fundamentally now.
1924
Guido van Rossum8727df41996-09-09 15:16:39 +000019256.6. Q. Why can't I derive a class from built-in types (e.g. lists or
Guido van Rossum3de27361994-07-25 14:19:33 +00001926files)?
1927
1928A. This is caused by the relatively late addition of (user-defined)
1929classes to the language -- the implementation framework doesn't easily
1930allow it. See the answer to question 4.2 for a work-around. This
1931*may* be fixed in the (distant) future.
1932
Guido van Rossum8727df41996-09-09 15:16:39 +000019336.7. Q. Why must 'self' be declared and used explicitly in method
Guido van Rossum3de27361994-07-25 14:19:33 +00001934definitions and calls?
1935
1936A. By asking this question you reveal your C++ background. :-)
1937When I added classes, this was (again) the simplest way of
1938implementing methods without too many changes to the interpreter. I
1939borrowed the idea from Modula-3. It turns out to be very useful, for
1940a variety of reasons.
1941
1942First, it makes it more obvious that you are using a method or
1943instance attribute instead of a local variable. Reading "self.x" or
1944"self.meth()" makes it absolutely clear that an instance variable or
1945method is used even if you don't know the class definition by heart.
1946In C++, you can sort of tell by the lack of a local variable
Guido van Rossum061f1821994-10-06 16:03:45 +00001947declaration (assuming globals are rare or easily recognizable) -- but
Guido van Rossum3de27361994-07-25 14:19:33 +00001948in Python, there are no local variable declarations, so you'd have to
1949look up the class definition to be sure.
1950
1951Second, it means that no special syntax is necessary if you want to
1952explicitly reference or call the method from a particular class. In
1953C++, if you want to use a method from base class that is overridden in
1954a derived class, you have to use the :: operator -- in Python you can
1955write baseclass.methodname(self, <argument list>). This is
1956particularly useful for __init__() methods, and in general in cases
1957where a derived class method wants to extend the base class method of
1958the same name and thus has to call the base class method somehow.
1959
1960Lastly, for instance variables, it solves a syntactic problem with
1961assignment: since local variables in Python are (by definition!) those
1962variables to which a value assigned in a function body (and that
1963aren't explicitly declared global), there has to be some way to tell
1964the interpreter that an assignment was meant to assign to an instance
1965variable instead of to a local variable, and it should preferably be
1966syntactic (for efficiency reasons). C++ does this through
1967declarations, but Python doesn't have declarations and it would be a
1968pity having to introduce them just for this purpose. Using the
1969explicit "self.var" solves this nicely. Similarly, for using instance
1970variables, having to write "self.var" means that references to
1971unqualified names inside a method don't have to search the instance's
1972directories.
1973
Guido van Rossum8727df41996-09-09 15:16:39 +000019746.8. Q. Can't you emulate threads in the interpreter instead of
Guido van Rossumb34e8aa1994-09-23 14:20:38 +00001975relying on an OS-specific thread implementation?
1976
1977A. Unfortunately, the interpreter pushes at least one C stack frame
1978for each Python stack frame. Also, extensions can call back into
1979Python at almost random moments. Therefore a complete threads
1980implementation requires thread support for C.
1981
Guido van Rossum8727df41996-09-09 15:16:39 +000019826.9. Q. Why can't lambda forms contain statements?
Guido van Rossum061f1821994-10-06 16:03:45 +00001983
1984A. Python lambda forms cannot contain statements because Python's
Guido van Rossum796b2591995-01-20 23:05:52 +00001985syntactic framework can't handle statements nested inside expressions.
Guido van Rossum061f1821994-10-06 16:03:45 +00001986
1987However, in Python, this is not a serious problem. Unlike lambda
1988forms in other languages, where they add functionality, Python lambdas
1989are only a shorthand notation if you're too lazy to define a function.
1990
1991Functions are already first class objects in Python, and can be
1992declared in a local scope. Therefore the only advantage of using a
1993lambda form instead of a locally-defined function is that you'll have
1994to invent a name for the function -- but that's just a local variable
1995to which the function object (which is exactly the same type of object
1996that a lambda form yields) is assigned!
1997
Guido van Rossum8727df41996-09-09 15:16:39 +000019986.10. Q. Why don't lambdas have access to variables defined in the
1999containing scope?
2000
Guido van Rossumc458e941996-09-11 15:43:13 +00002001A. Because they are implemented as ordinary functions.
2002See question 4.5 above.
Guido van Rossum8727df41996-09-09 15:16:39 +00002003
20046.11. Q. Why can't recursive functions be defined inside other functions?
2005
2006A. See question 4.5 above.
2007
Guido van Rossum061f1821994-10-06 16:03:45 +000020086.12. Q. Why is there no more efficient way of iterating over a dictionary
2009than first constructing the list of keys()?
2010
2011A. Have you tried it? I bet it's fast enough for your purposes! In
2012most cases such a list takes only a few percent of the space occupied
2013by the dictionary -- it needs only 4 bytes (the size of a pointer) per
2014key -- a dictionary costs 8 bytes per key plus between 30 and 70
2015percent hash table overhead, plus the space for the keys and values --
2016by necessity all keys are unique objects and a string object (the most
2017common key type) costs at least 18 bytes plus the length of the
2018string. Add to that the values contained in the dictionary, and you
2019see that 4 bytes more per item really isn't that much more memory...
2020
2021A call to dict.keys() makes one fast scan over the dictionary
2022(internally, the iteration function does exist) copying the pointers
2023to the key objects into a pre-allocated list object of the right size.
2024The iteration time isn't lost (since you'll have to iterate anyway --
2025unless in the majority of cases your loop terminates very prematurely
2026(which I doubt since you're getting the keys in random order).
2027
2028I don't expose the dictionary iteration operation to Python
2029programmers because the dictionary shouldn't be modified during the
2030entire iteration -- if it is, there's a very small chance that the
2031dictionary is reorganized because the hash table becomes too full, and
2032then the iteration may miss some items and see others twice. Exactly
2033because this only occurs rarely, it would lead to hidden bugs in
2034programs: it's easy never to have it happen during test runs if you
2035only insert or delete a few items per iteration -- but your users will
2036surely hit upon it sooner or later.
2037
Guido van Rossumb0a2ce51995-08-28 19:41:35 +000020386.13. Q. Can Python be compiled to machine code, C or some other language?
2039
2040A. Not easily. Python's high level data types, dynamic typing of
2041objects and run-time invocation of the interpreter (using eval() or
2042exec) together mean that a "compiled" Python program would probably
2043consist mostly of calls into the Python run-time system, even for
2044seemingly simple operations like "x+1". Thus, the performance gain
2045would probably be minimal.
2046
2047Internally, Python source code is always translated into a "virtual
2048machine code" or "byte code" representation before it is interpreted
2049(by the "Python virtual machine" or "bytecode interpreter"). In order
2050to avoid the overhead of parsing and translating modules that rarely
2051change over and over again, this byte code is written on a file whose
2052name ends in ".pyc" whenever a module is parsed (from a file whose
2053name ends in ".py"). When the corresponding .py file is changed, it
2054is parsed and translated again and the .pyc file is rewritten. There
2055is no performance difference once the .pyc file has been loaded (the
2056bytecode read from the .pyc file is exactly the same as the bytecode
2057created by direct translation). The only difference is that loading
2058code from a .pyc file is faster than parsing and translating a .py
2059file, so the presence of precompiled .pyc files will generally improve
2060start-up time of Python scripts. If desired, the Lib/compileall.py
2061module/script can be used to force creation of valid .pyc files for a
2062given set of modules.
2063
2064If you are looking for a way to translate Python programs in order to
2065distribute them in binary form, without the need to distribute the
2066interpreter and library as well, have a look at the freeze.py script
2067in the Tools/freeze directory. This creates a single binary file
2068incorporating your program, the Python interpreter, and those parts of
2069the Python library that are needed by your program. Of course, the
2070resulting binary will only run on the same type of platform as that
2071used to create it.
2072
2073Hints for proper usage of freeze.py:
2074
2075- the script must be in a file whose name ends in .py
2076
2077- you must have installed Python fully:
2078
Guido van Rossume7d92d51995-10-11 18:06:54 +00002079 make install
2080 make libinstall
2081 make inclinstall
2082 make libainstall
Guido van Rossumb0a2ce51995-08-28 19:41:35 +00002083
Guido van Rossum05151e01995-09-28 13:24:46 +000020846.14. Q. Why doesn't Python use proper garbage collection?
2085
2086A. It's looking less and less likely that Python will ever get
2087"automatic" garbage collection (GC). For one thing, unless this were
2088added to C as a standard feature, it's a portability pain in the ass.
2089And yes, I know about the Xerox library. It has bits of assembler
2090code for *most* *common* platforms. Not for all. And although it is
2091mostly transparent, it isn't completely transparent (when I once
2092linked Python with it, it dumped core).
2093
2094"Proper" GC also becomes a problem when Python gets embedded into
2095other applications. While in a stand-alone Python it may be fine to
2096replace the standard malloc() and free() with versions provided by the
2097GC library, an application embedding Python may want to have its *own*
2098substitute for malloc() and free(), and may not want Python's. Right
2099now, Python works with anything that implements malloc() and free()
2100properly.
2101
2102Besides, the predictability of destructor calls in Python is kind of
2103attractive. With GC, the following code (which is fine in current
2104Python) will run out of file descriptors long before it runs out of
2105memory:
2106
Guido van Rossume7d92d51995-10-11 18:06:54 +00002107 for file in <very long list of files>:
2108 f = open(file)
2109 c = file.read(1)
Guido van Rossum05151e01995-09-28 13:24:46 +00002110
2111Using the current reference counting and destructor scheme, each new
2112assignment to f closes the previous file. Using GC, this is not
2113guaranteed. Sure, you can think of ways to fix this. But it's not
2114off-the-shelf technology.
2115
Guido van Rossuma7925f11994-01-26 10:20:16 +00002116
21177. Using Python on non-UNIX platforms
2118=====================================
2119
Guido van Rossum91f60831994-02-15 15:52:27 +000021207.1. Q. Is there a Mac version of Python?
Guido van Rossuma7925f11994-01-26 10:20:16 +00002121
Guido van Rossume530c581995-04-10 12:32:16 +00002122A. Yes, see the "mac" subdirectory of the distribution sites,
Guido van Rossum7be34a81995-05-31 15:17:12 +00002123e.g. <URL:ftp://ftp.python.org/pub/python/mac/>.
Guido van Rossuma7925f11994-01-26 10:20:16 +00002124
Guido van Rossumc458e941996-09-11 15:43:13 +000021257.2. Q. Are there DOS and Windows versions of Python?
Guido van Rossuma7925f11994-01-26 10:20:16 +00002126
Guido van Rossumc458e941996-09-11 15:43:13 +00002127A. Yes. There is a plethora of not-always-compatible versions. See
2128the "pythonwin", "wpy", "nt" and "pc" subdirectories of the
2129distribution sites. A quick comparison:
Guido van Rossuma7925f11994-01-26 10:20:16 +00002130
Guido van Rossumc458e941996-09-11 15:43:13 +00002131PythonWin: Extensive support for the 32-bit native Windows API and GUI
2132building using MFC. Windows NT and Windows 95 only (and Windows
21333.1(1) using win32s, until Microsoft stops supporting it :-( ).
2134<URL:ftp://ftp.python.org/pub/python/pythonwin/>.
Guido van Rossumb34e8aa1994-09-23 14:20:38 +00002135
Guido van Rossumc458e941996-09-11 15:43:13 +00002136WPY: Ports to DOS, Windows 3.1(1), Windows 95, Windows NT and OS/2.
2137Also contains a GUI package that offers portability between Windows
2138(not DOS) and Unix, and native look and feel on both.
2139<URL:ftp://ftp.python.org/pub/python/wpy/>.
Guido van Rossumb34e8aa1994-09-23 14:20:38 +00002140
Guido van Rossumc458e941996-09-11 15:43:13 +00002141NT: Basic ports built straight from the 1.4 distribution for Windows
214295 and Windows NT. This will eventually provide core support for
2143both PythonWin and WPY on all 32-bit Microsoft platforms.
Guido van Rossum3fc9d731995-07-25 15:10:56 +00002144<URL:ftp://ftp.python.org/pub/python/nt/>.
2145
Guido van Rossumc458e941996-09-11 15:43:13 +00002146PC: Old, unsupported ports to DOS, Windows 3.1(1) and OS/2.
2147<URL:ftp://ftp.python.org/pub/python/pc/>.
Guido van Rossum91f60831994-02-15 15:52:27 +00002148
Guido van Rossumc458e941996-09-11 15:43:13 +000021497.3. Q. Is there an OS/2 version of Python?
Guido van Rossum061f1821994-10-06 16:03:45 +00002150
Guido van Rossumc458e941996-09-11 15:43:13 +00002151A. Yes, see the "pc" and "wpy" subdirectory of the distribution sites
2152(see above).
Guido van Rossum061f1821994-10-06 16:03:45 +00002153
Guido van Rossumc458e941996-09-11 15:43:13 +000021547.4. Q. Is there a VMS version of Python?
Guido van Rossume530c581995-04-10 12:32:16 +00002155
Guido van Rossum3fc9d731995-07-25 15:10:56 +00002156A. Donn Cave <donn@cac.washington.edu> did a partial port. The
2157results of his efforts are on public display in
Guido van Rossumbf8e7d51995-08-28 03:09:13 +00002158<<URL:ftp://ftp.python.org/pub/python/contrib/vms.tar.gz/>. Someone
2159else is working on a more complete port, for details watch the list.
Guido van Rossume530c581995-04-10 12:32:16 +00002160
Guido van Rossumc458e941996-09-11 15:43:13 +000021617.5. Q. What about IBM mainframes, or other non-UNIX platforms?
Guido van Rossumb34e8aa1994-09-23 14:20:38 +00002162
Guido van Rossumb0a2ce51995-08-28 19:41:35 +00002163A. I haven't heard about these, except I remember hearing about an
2164OS/9 port and a port to Vxworks (both operating systems for embedded
2165systems). If you're interested in any of this, go directly to the
2166newsgroup and ask there, you may find exactly what you need. For
2167example, a port to MPE/iX 5.0 on HP3000 computers was just announced,
2168see <URL:http://www.allegro.com/software/>.
Guido van Rossumb34e8aa1994-09-23 14:20:38 +00002169
Guido van Rossumc458e941996-09-11 15:43:13 +000021707.6. Q. Where are the source or Makefiles for the non-UNIX versions?
Guido van Rossumb34e8aa1994-09-23 14:20:38 +00002171
Guido van Rossume530c581995-04-10 12:32:16 +00002172A. The standard sources can (almost) be used. Additional sources can
2173be found in the platform-specific subdirectories of the distribution.
Guido van Rossumb34e8aa1994-09-23 14:20:38 +00002174
Guido van Rossumc458e941996-09-11 15:43:13 +000021757.7. Q. What is the status and support for the non-UNIX versions?
Guido van Rossumb34e8aa1994-09-23 14:20:38 +00002176
2177A. I don't have access to most of these platforms, so in general I am
2178dependent on material submitted by volunteers(*). However I strive to
2179integrate all changes needed to get it to compile on a particular
2180platform back into the standard sources, so porting of the next
2181version to the various non-UNIX platforms should be easy.
2182
Guido van Rossuma6c707c1995-01-02 17:32:28 +00002183(*) For the Macintosh, that volunteer is me, with help from Jack
2184Jansen <jack@cwi.nl>.
Guido van Rossumb34e8aa1994-09-23 14:20:38 +00002185
Guido van Rossumc458e941996-09-11 15:43:13 +000021867.8. Q. I have a PC version but it appears to be only a binary.
Guido van Rossum7ce61c11994-06-13 15:13:56 +00002187Where's the library?
Guido van Rossuma7925f11994-01-26 10:20:16 +00002188
2189A. You still need to copy the files from the distribution directory
Guido van Rossum91f60831994-02-15 15:52:27 +00002190"python/Lib" to your system. If you don't have the full distribution,
Guido van Rossume530c581995-04-10 12:32:16 +00002191you can get the file lib<version>.tar.gz from most ftp sites carrying
2192Python; this is a subset of the distribution containing just those
Guido van Rossum7be34a81995-05-31 15:17:12 +00002193files, e.g. <URL:ftp://ftp.python.org/pub/python/src/lib1.1.tar.gz>.
Guido van Rossuma7925f11994-01-26 10:20:16 +00002194
Guido van Rossum5333c5d1994-04-11 11:06:22 +00002195Once you have installed the library, you need to point sys.path to it.
2196Assuming the library is in C:\misc\python\lib, the following commands
2197will point your Python interpreter to it (note the doubled backslashes
2198-- you can also use single forward slashes instead):
2199
Guido van Rossuma6c707c1995-01-02 17:32:28 +00002200 >>> import sys
2201 >>> sys.path.insert(0, 'C:\\misc\\python\\lib')
2202 >>>
Guido van Rossum5333c5d1994-04-11 11:06:22 +00002203
2204For a more permanent effect, set the environment variable PYTHONPATH,
2205as follows (talking to a DOS prompt):
2206
Guido van Rossuma6c707c1995-01-02 17:32:28 +00002207 C> SET PYTHONPATH=C:\misc\python\lib
Guido van Rossum5333c5d1994-04-11 11:06:22 +00002208
Guido van Rossumc458e941996-09-11 15:43:13 +000022097.9. Q. Where's the documentation for the Mac or PC version?
Guido van Rossuma7925f11994-01-26 10:20:16 +00002210
Guido van Rossume530c581995-04-10 12:32:16 +00002211A. The documentation for the Unix version also applies to the Mac and
2212PC versions. Where applicable, differences are indicated in the text.
Guido van Rossuma7925f11994-01-26 10:20:16 +00002213
Guido van Rossumc458e941996-09-11 15:43:13 +000022147.10. Q. The Mac (PC) version doesn't seem to have any facilities for
Guido van Rossum91f60831994-02-15 15:52:27 +00002215creating or editing programs apart from entering it interactively, and
2216there seems to be no way to save code that was entered interactively.
2217How do I create a Python program on the Mac (PC)?
Guido van Rossuma7925f11994-01-26 10:20:16 +00002218
Guido van Rossumb34e8aa1994-09-23 14:20:38 +00002219A. Use an external editor. On the Mac, BBEdit seems to be a popular
2220no-frills text editor. I work like this: start the interpreter; edit
2221a module file using BBedit; import and test it in the interpreter;
2222edit again in BBedit; then use the built-in function reload() to
2223re-read the imported module; etc.
Guido van Rossum5333c5d1994-04-11 11:06:22 +00002224
2225Regarding the same question for the PC, Kurt Wm. Hemr writes: "While
2226anyone with a pulse could certainly figure out how to do the same on
2227MS-Windows, I would recommend the NotGNU Emacs clone for MS-Windows.
2228Not only can you easily resave and "reload()" from Python after making
2229changes, but since WinNot auto-copies to the clipboard any text you
2230select, you can simply select the entire procedure (function) which
2231you changed in WinNot, switch to QWPython, and shift-ins to reenter
2232the changed program unit."