blob: 7856f4e05d93ff4c296f853cb9f549ceb73e1be7 [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$
Guido van Rossum9c5dc291996-10-13 15:48:56 +000013Last-modified: $Date$
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.
Guido van Rossum8a913021996-10-08 17:18:30 +0000106 3.10. Q. Other trouble building Python on platform X.
107 3.11. Q. How to configure dynamic loading on Linux.
Guido van Rossum9c5dc291996-10-13 15:48:56 +0000108 3.12. Q: I can't get shared modules to work on Linux 2.0 (Slackware96)?
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"
Guido van Rossum8727df41996-09-09 15:16:39 +0000114 fails.
Guido van Rossum9c5dc291996-10-13 15:48:56 +0000115 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 Rossuma4e41a81996-10-22 03:00:43 +0000179 4.40. Q. I try to use __spam and I get an error about _SomeClassName__spam.
Guido van Rossuma7925f11994-01-26 10:20:16 +0000180
181 5. Extending Python
182 5.1. Q. Can I create my own functions in C?
183 5.2. Q. Can I create my own functions in C++?
Guido van Rossum7ce61c11994-06-13 15:13:56 +0000184 5.3. Q. How can I execute arbitrary Python statements from C?
185 5.4. Q. How can I evaluate an arbitrary Python expression from C?
186 5.5. Q. How do I extract C values from a Python object?
187 5.6. Q. How do I use mkvalue() to create a tuple of arbitrary length?
Guido van Rossum8727df41996-09-09 15:16:39 +0000188 5.7. Q. How do I call an object's method from C?
189 5.8. Q. How do I catch the output from print_error()?
190 5.9. Q. How do I access a module written in Python from C?
191 5.10. Q. How do I interface to C++ objects from Python?
Guido van Rossuma7925f11994-01-26 10:20:16 +0000192
193 6. Python's design
Guido van Rossum8727df41996-09-09 15:16:39 +0000194 6.1. Q. Why isn't there a switch or case statement in Python?
195 6.2. Q. Why does Python use indentation for grouping of statements?
196 6.3. Q. Why are Python strings immutable?
197 6.4. Q. Why don't strings have methods like index() or sort(), like
Guido van Rossum3de27361994-07-25 14:19:33 +0000198 lists?
Guido van Rossum8727df41996-09-09 15:16:39 +0000199 6.5. Q. Why does Python use methods for some functionality
Guido van Rossum3de27361994-07-25 14:19:33 +0000200 (e.g. list.index()) but functions for other (e.g. len(list))?
Guido van Rossum8727df41996-09-09 15:16:39 +0000201 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 +0000202 files)?
Guido van Rossum8727df41996-09-09 15:16:39 +0000203 6.7. Q. Why must 'self' be declared and used explicitly in method
Guido van Rossum3de27361994-07-25 14:19:33 +0000204 definitions and calls?
Guido van Rossum8727df41996-09-09 15:16:39 +0000205 6.8. Q. Can't you emulate threads in the interpreter instead of
206 relying on an OS-specific thread implementation?
207 6.9. Q. Why can't lambda forms contain statements?
208 6.10. Q. Why don't lambdas have access to variables defined in the
209 containing scope?
210 6.11. Q. Why can't recursive functions be defined inside other functions?
Guido van Rossum061f1821994-10-06 16:03:45 +0000211 6.12. Q. Why is there no more efficient way of iterating over a dictionary
212 than first constructing the list of keys()?
Guido van Rossumb0a2ce51995-08-28 19:41:35 +0000213 6.13. Q. Can Python be compiled to machine code, C or some other language?
Guido van Rossum05151e01995-09-28 13:24:46 +0000214 6.14. Q. Why doesn't Python use proper garbage collection?
Guido van Rossuma7925f11994-01-26 10:20:16 +0000215
216 7. Using Python on non-UNIX platforms
Guido van Rossum91f60831994-02-15 15:52:27 +0000217 7.1. Q. Is there a Mac version of Python?
Guido van Rossumc458e941996-09-11 15:43:13 +0000218 7.2. Q. Are there DOS and Windows versions of Python?
219 7.3. Q. Is there an OS/2 version of Python?
220 7.4. Q. Is there a VMS version of Python?
221 7.5. Q. What about IBM mainframes, or other non-UNIX platforms?
222 7.6. Q. Where are the source or Makefiles for the non-UNIX versions?
223 7.7. Q. What is the status and support for the non-UNIX versions?
224 7.8. Q. I have a PC version but it appears to be only a binary.
225 Where's the library?
226 7.9. Q. Where's the documentation for the Mac or PC version?
227 7.10. Q. The Mac (PC) version doesn't seem to have any facilities for
Guido van Rossumb34e8aa1994-09-23 14:20:38 +0000228 creating or editing programs apart from entering it interactively, and
229 there seems to be no way to save code that was entered interactively.
230 How do I create a Python program on the Mac (PC)?
Guido van Rossuma7925f11994-01-26 10:20:16 +0000231
232To find a particular question, search for the question number followed
233by a dot, a space, and a Q at the beginning of a line (e.g. to find
234question 4.2 in vi, type /^4\.2\. Q/).
235
236
2371. General information and availability
Guido van Rossumb0a2ce51995-08-28 19:41:35 +0000238 =======================================
Guido van Rossuma7925f11994-01-26 10:20:16 +0000239
2401.1. Q. What is Python?
241
242A. Python is an interpreted, interactive, object-oriented programming
243language. It incorporates modules, exceptions, dynamic typing, very
244high level dynamic data types, and classes. Python combines
245remarkable power with very clear syntax. It has interfaces to many
246system calls and libraries, as well as to various window systems, and
247is extensible in C or C++. It is also usable as an extension language
248for applications that need a programmable interface. Finally, Python
Guido van Rossuma6c707c1995-01-02 17:32:28 +0000249is portable: it runs on many brands of UNIX, on the Mac, and on PCs
250under MS-DOS, Windows, Windows NT, and OS/2.
Guido van Rossuma7925f11994-01-26 10:20:16 +0000251
252To find out more, the best thing to do is to start reading the
253tutorial from the documentation set (see a few questions further
254down).
255
2561.2. Q. Why is it called Python?
257
Guido van Rossum796b2591995-01-20 23:05:52 +0000258A. Apart from being a computer scientist, I'm also a fan of "Monty
Guido van Rossuma7925f11994-01-26 10:20:16 +0000259Python's Flying Circus" (a BBC comedy series from the seventies, in
Guido van Rossum5333c5d1994-04-11 11:06:22 +0000260the -- unlikely -- case you didn't know). It occurred to me one day
261that I needed a name that was short, unique, and slightly mysterious.
262And I happened to be reading some scripts from the series at the
263time... So then I decided to call my language Python. But Python is
264not a joke. And don't you associate it with dangerous reptiles
Guido van Rossuma6c707c1995-01-02 17:32:28 +0000265either! (If you need an icon, use an image of the 16-ton weight from
266the TV series or of a can of SPAM :-)
Guido van Rossuma7925f11994-01-26 10:20:16 +0000267
2681.3. Q. How do I obtain a copy of the Python source?
269
Guido van Rossuma6c707c1995-01-02 17:32:28 +0000270A. The latest complete Python source distribution is always available
271by anonymous ftp, e.g.
Guido van Rossum8727df41996-09-09 15:16:39 +0000272<URL:ftp://ftp.python.org/pub/python/src/python1.3.tar.gz>. It is a
Guido van Rossume530c581995-04-10 12:32:16 +0000273gzipped tar file containing the complete C source, LaTeX
274documentation, Python library modules, example programs, and several
275useful pieces of freely distributable software. This will compile and
276run out of the box on most UNIX platforms. (See section 7 for
277non-UNIX information.)
Guido van Rossuma6c707c1995-01-02 17:32:28 +0000278
Guido van Rossum8727df41996-09-09 15:16:39 +0000279Sometimes beta versions of a newer release are available; check the
280subdirectory "beta" of the above-mentioned URL (i.e.
281<URL:ftp://ftp.python.org/pub/python/src/beta/>). (At the time of
282writing, beta3 for Python 1.4 is available there, and should be
283checked before reporting problems with version 1.3.)
284
Guido van Rossuma6c707c1995-01-02 17:32:28 +0000285Occasionally a set of patches is issued which has to be applied using
286the patch program. These patches are placed in the same directory,
Guido van Rossum7be34a81995-05-31 15:17:12 +0000287e.g. <URL:ftp://ftp.python.org/pub/python/src/patch1.1.1>. (At the time
Guido van Rossum8727df41996-09-09 15:16:39 +0000288of writing, no patches exist.)
Guido van Rossuma6c707c1995-01-02 17:32:28 +0000289
290An index of said ftp directory can be found in the file INDEX. An
291HTML version of the index can be found in the file index.html,
Guido van Rossum7be34a81995-05-31 15:17:12 +0000292<URL:ftp://ftp.python.org/pub/python/index.html>.
Guido van Rossuma7925f11994-01-26 10:20:16 +0000293
2941.4. Q. How do I get documentation on Python?
295
Guido van Rossuma8a8d4a1995-03-10 16:19:31 +0000296A. The LaTeX source for the documentation is part of the source
297distribution. If you don't have LaTeX, the latest Python
298documentation set is always available by anonymous ftp, e.g.
Guido van Rossum7be34a81995-05-31 15:17:12 +0000299<URL:ftp://ftp.python.org/pub/python/doc/postscript.tar.gz>. It is a
Guido van Rossuma6c707c1995-01-02 17:32:28 +0000300gzipped tar file containing PostScript files of the reference manual,
Guido van Rossum3de27361994-07-25 14:19:33 +0000301the library manual, and the tutorial. Note that the library manual is
302the most important one of the set, as much of Python's power stems
303from the standard or built-in types, functions and modules, all of
304which are described here. PostScript for a high-level description of
Guido van Rossuma8a8d4a1995-03-10 16:19:31 +0000305Python is in the file nluug-paper.ps (a separate file on the ftp
306site).
Guido van Rossuma7925f11994-01-26 10:20:16 +0000307
Guido van Rossumc50158e1994-05-31 09:18:50 +00003081.5. Q. Are there other ftp sites that mirror the Python distribution?
309
Guido van Rossuma6c707c1995-01-02 17:32:28 +0000310A. The following anonymous ftp sites keep mirrors of the Python
311distribution:
Guido van Rossuma7925f11994-01-26 10:20:16 +0000312
Guido van Rossume7d92d51995-10-11 18:06:54 +0000313USA:
314
315 <URL:ftp://ftp.python.org/pub/python/>
Guido van Rossuma6c707c1995-01-02 17:32:28 +0000316 <URL:ftp://gatekeeper.dec.com/pub/plan/python/>
Guido van Rossume7d92d51995-10-11 18:06:54 +0000317 <URL:ftp://ftp.uu.net/languages/python/>
Guido van Rossuma6c707c1995-01-02 17:32:28 +0000318 <URL:ftp://ftp.wustl.edu/graphics/graphics/sgi-stuff/python/>
Guido van Rossume7d92d51995-10-11 18:06:54 +0000319 <URL:ftp://ftp.sterling.com/programming/languages/python/>
320 <URL:ftp://uiarchive.cso.uiuc.edu/pub/lang/python/>
321 <URL:ftp://ftp.pht.com/mirrors/python/python/>
322
323Europe:
324
325 <URL:ftp://ftp.cwi.nl/pub/python/>
Guido van Rossuma6c707c1995-01-02 17:32:28 +0000326 <URL:ftp://ftp.funet.fi/pub/languages/python/>
327 <URL:ftp://ftp.sunet.se/pub/lang/python/>
Guido van Rossum3fc9d731995-07-25 15:10:56 +0000328 <URL:ftp://unix.hensa.ac.uk/mirrors/uunet/languages/python/>
Guido van Rossumb0a2ce51995-08-28 19:41:35 +0000329 <URL:ftp://ftp.ibp.fr/pub/python/>
Guido van Rossum3fc9d731995-07-25 15:10:56 +0000330 <URL:ftp://ftp.switch.ch/software/sources/python/>
331 <URL:ftp://ftp.informatik.tu-muenchen.de/pub/comp/programming/languages/python/>
Guido van Rossuma7925f11994-01-26 10:20:16 +0000332
Guido van Rossume7d92d51995-10-11 18:06:54 +0000333Australia:
334
335 <URL:ftp://ftp.dstc.edu.au/pub/python/>
336
Guido van Rossuma6c707c1995-01-02 17:32:28 +0000337Or try archie on the string "python".
Guido van Rossuma7925f11994-01-26 10:20:16 +0000338
Guido van Rossumc50158e1994-05-31 09:18:50 +00003391.6. Q. Is there a newsgroup or mailing list devoted to Python?
Guido van Rossuma7925f11994-01-26 10:20:16 +0000340
Guido van Rossuma6c707c1995-01-02 17:32:28 +0000341A. There is a newsgroup, comp.lang.python <URL:news:comp.lang.python>,
342and a mailing list. The newsgroup and mailing list are gatewayed into
343each other -- if you can read news it's unnecessary to subscribe to
344the mailing list. Send e-mail to <python-list-request@cwi.nl> to
Guido van Rossume530c581995-04-10 12:32:16 +0000345(un)subscribe to the mailing list. Hypermail archives of (nearly)
346everything posted to the mailing list (and thus the newsgroup) are
347available on our WWW server,
Guido van Rossuma6c707c1995-01-02 17:32:28 +0000348<URL:http://www.cwi.nl/~guido/hypermail/index.html>. The raw archives
349are also available by ftp, e.g.
Guido van Rossum7be34a81995-05-31 15:17:12 +0000350<URL:ftp://ftp.python.org/pub/python/mail/mailinglist.gz>. The
Guido van Rossume530c581995-04-10 12:32:16 +0000351uncompressed versions of these files can be read with the standard
352UNIX Mail program ("Mail -f file") or with nn ("nn file"). To read
Guido van Rossumbf8e7d51995-08-28 03:09:13 +0000353them using MH, you could use "inc -file file". (The archival service
354has stopped archiving new articles around the end of April 1995. I
355hope to revive it on the PSA server www.python.org sometime in the
356future.)
Guido van Rossuma7925f11994-01-26 10:20:16 +0000357
Guido van Rossuma6c707c1995-01-02 17:32:28 +00003581.7. Q. Is there a WWW page devoted to Python?
359
Guido van Rossum7be34a81995-05-31 15:17:12 +0000360A. Yes, <URL:http://www.python.org/> is the official Python home page.
361At the time of writing, this page is not yet completely operational;
362you may have a look at the old Python home page:
363<URL:http://www.cwi.nl/~guido/Python.html> or at the U.S. copy:
364<URL:http://www.python.org/~guido/Python.html>.
Guido van Rossuma6c707c1995-01-02 17:32:28 +0000365
Guido van Rossuma8a8d4a1995-03-10 16:19:31 +00003661.8. Q. Is the Python documentation available on the WWW?
Guido van Rossuma7925f11994-01-26 10:20:16 +0000367
Guido van Rossum7be34a81995-05-31 15:17:12 +0000368A. Yes, see <URL:http://www.python.org/> (Python's home page). It
369contains pointers to hypertext versions of the whole documentation set
370(as hypertext, not just PostScript).
Guido van Rossuma7925f11994-01-26 10:20:16 +0000371
Guido van Rossuma8a8d4a1995-03-10 16:19:31 +0000372If you wish to browse this collection of HTML files on your own
373machine, it is available bundled up by anonymous ftp,
Guido van Rossum7be34a81995-05-31 15:17:12 +0000374e.g. <URL:ftp://ftp.python.org/pub/python/doc/html.tar.gz>.
Guido van Rossuma8a8d4a1995-03-10 16:19:31 +0000375
376An Emacs-INFO set containing the library manual is also available by
Guido van Rossum7be34a81995-05-31 15:17:12 +0000377ftp, e.g. <URL:ftp://ftp.python.org/pub/python/doc/lib-info.tar.gz>.
Guido van Rossuma8a8d4a1995-03-10 16:19:31 +0000378
3791.9. Q. Is there a book on Python, or will there be one out soon?
380
Guido van Rossum3fc9d731995-07-25 15:10:56 +0000381A. Mark Lutz is writing a Python book for O'Reilly and Associates, to
382be published early 1996. See the outline (in PostScript):
383<URL:http://www.python.org/workshops/1995-05/outlinep.eps>.
Guido van Rossuma8a8d4a1995-03-10 16:19:31 +0000384
3851.10. Q. Are there any published articles about Python that I can quote?
Guido van Rossuma7925f11994-01-26 10:20:16 +0000386
387A. So far the only refereed and published article that describes
388Python in some detail is:
389
390 Guido van Rossum and Jelke de Boer, "Interactively Testing Remote
391 Servers Using the Python Programming Language", CWI Quarterly, Volume
392 4, Issue 4 (December 1991), Amsterdam, pp 283-303.
393
394LaTeX source for this paper is available as part of the Python source
395distribution.
396
Guido van Rossum05151e01995-09-28 13:24:46 +0000397See also the next section (supposedly Aaron Watters' paper has been
398refereed).
399
Guido van Rossuma8a8d4a1995-03-10 16:19:31 +00004001.11. Q. Are there short introductory papers or talks on Python?
Guido van Rossuma6c707c1995-01-02 17:32:28 +0000401
Guido van Rossum05151e01995-09-28 13:24:46 +0000402A. A recent, very entertaining introduction to Python is the tutorial by
403Aaron Watters in UnixWorld Online:
404
405 Aaron R. Watters: "The What, Why, Who, and Where of Python",
406 <URL:http://www.wcmh.com/uworld/archives/95/tutorial/005.html>
407
408An olded paper is:
Guido van Rossuma7925f11994-01-26 10:20:16 +0000409
410 Guido van Rossum, "An Introduction to Python for UNIX/C
411 Programmers", in the proceedings of the NLUUG najaarsconferentie
Guido van Rossum061f1821994-10-06 16:03:45 +0000412 1993 (dutch UNIX users group meeting November 1993).
Guido van Rossuma7925f11994-01-26 10:20:16 +0000413
Guido van Rossuma6c707c1995-01-02 17:32:28 +0000414PostScript for this paper and for the slides used for the accompanying
415presentation is available by ftp as
Guido van Rossum7be34a81995-05-31 15:17:12 +0000416<URL:ftp://ftp.python.org/pub/python/doc/nluug-paper.ps> and
417<URL:ftp://ftp.python.org/pub/python/doc/nluug-slides.ps>, respectively.
Guido van Rossuma6c707c1995-01-02 17:32:28 +0000418
419Slides for a talk on Python that I gave at the Usenix Symposium on
Guido van Rossum05151e01995-09-28 13:24:46 +0000420Very High Level Languages in Santa Fe, NM, USA in October 1994 are
Guido van Rossum7be34a81995-05-31 15:17:12 +0000421available as <URL:ftp://ftp.python.org/pub/python/doc/vhll-slides.ps>.
Guido van Rossuma6c707c1995-01-02 17:32:28 +0000422
Guido van Rossuma8a8d4a1995-03-10 16:19:31 +00004231.12. Q. How does the Python version numbering scheme work?
Guido van Rossum95f61a71994-01-26 17:23:37 +0000424
Guido van Rossum05151e01995-09-28 13:24:46 +0000425A. Python versions are numbered A.B.C or A.B. A is the major version
426number -- it is only incremented for major changes in functionality or
427source structure. B is the minor version number, incremented for less
Guido van Rossum95f61a71994-01-26 17:23:37 +0000428earth-shattering changes to a release. C is the patchlevel -- it is
Guido van Rossum05151e01995-09-28 13:24:46 +0000429incremented for each new patch release. Not all releases have patch
430releases. Note that in the past, patches have added significant
431changes; in fact the changeover from 0.9.9 to 1.0.0 was the first time
432that either A or B changed!
Guido van Rossum95f61a71994-01-26 17:23:37 +0000433
Guido van Rossum8727df41996-09-09 15:16:39 +0000434Beta versions have an additional suffix of "betaN" for some small
435number N. Note that (for instance) all versions labeled 1.4betaN
436*precede* the actual release of 1.4. 1.4b3 is short for 1.4beta3.
Guido van Rossuma8a8d4a1995-03-10 16:19:31 +0000437
4381.13. Q. How do I get a beta test version of Python?
439
Guido van Rossum05151e01995-09-28 13:24:46 +0000440A. If there are any beta releases, they are published in the normal
441source directory (e.g. <URL:ftp://ftp.python.org/pub/python/src/>).
Guido van Rossuma8a8d4a1995-03-10 16:19:31 +0000442
Guido van Rossum05151e01995-09-28 13:24:46 +00004431.14. Q. Are there copyright restrictions on the use of Python?
Guido van Rossum7ce61c11994-06-13 15:13:56 +0000444
445A. Hardly. You can do anything you want with the source, as long as
Guido van Rossuma6c707c1995-01-02 17:32:28 +0000446you leave the copyrights in, and display those copyrights in any
447documentation about Python that you produce. Also, don't use the
448author's institute's name in publicity without prior written
449permission, and don't hold them responsible for anything (read the
450actual copyright for a precise legal wording).
451
452In particular, if you honor the copyright rules, it's OK to use Python
453for commercial use, to sell copies of Python in source or binary form,
454or to sell products that enhance Python or incorporate Python (or part
455of it) in some form. I would still like to know about all commercial
456use of Python!
Guido van Rossum5333c5d1994-04-11 11:06:22 +0000457
Guido van Rossum05151e01995-09-28 13:24:46 +00004581.15. Q. Why was Python created in the first place?
Guido van Rossum7be34a81995-05-31 15:17:12 +0000459
460A. Here's a *very* brief summary of what got me started:
461
462- I had extensive experience with implementing an interpreted language
463in the ABC group at CWI, and from working with this group I had
464learned a lot about language design. This is the origin of many
465Python features, including the use of indentation for statement
466grouping and the inclusion of very-high-level data types (although the
467details are all different in Python).
468
469- I had a number of gripes about the ABC language, but also liked many
470of its features. It was impossible to extend the ABC language (or its
471implementation) to remedy my complaints -- in fact its lack of
472extensibility was one of its biggest problems.
473
474- I had some experience with using Modula-2+ and talked with the
475designers of Modula-3 (and read the M3 report). M3 is the origin of
476the syntax and semantics used for exceptions, and some other Python
477features.
478
479- I was working in the Amoeba distributed operating system group at
480CWI. We needed a better way to do system administration than by
481writing either C programs or Bourne shell scripts, since Amoeba had
482its own system call interface which wasn't easily accessible from the
Guido van Rossumbf8e7d51995-08-28 03:09:13 +0000483Bourne shell. My experience with error handling in Amoeba made me
484acutely aware of the importance of exceptions as a programming
485language feature.
Guido van Rossum7be34a81995-05-31 15:17:12 +0000486
487- It occurred to me that a scripting language with a syntax like ABC
488but with access to the Amoeba system calls would fill the need. I
489realized that it would be foolish to write an Amoeba-specific
490language, so I decided that I needed a language that was generally
491extensible.
492
493- During the 1989 Christmas holidays, I had a lot of time on my hand,
494so I decided to give it a try. During the next year, while still
495mostly working on it in my own time, Python was used in the Amoeba
496project with increasing success, and the feedback from colleagues made
497me add many early improvements.
498
499- In February 1991, after just over a year of development, I decided
500to post to USENET. The rest is in the Misc/HISTORY file.
501
Guido van Rossuma7925f11994-01-26 10:20:16 +0000502
5032. Python in the real world
504===========================
505
5062.1. Q. How many people are using Python?
507
Guido van Rossum5333c5d1994-04-11 11:06:22 +0000508A. I don't know, but the maximum number of simultaneous subscriptions
509to the Python mailing list before it was gatewayed into the newsgroup
510was about 180 (several of which were local redistribution lists). I
511believe that many active Python users don't bother to subscribe to the
512list, and now that there's a newsgroup the mailing list subscription
Guido van Rossum7ce61c11994-06-13 15:13:56 +0000513is even less meaningful. I see new names on the newsgroup all the
514time and my best guess is that there are currently at least several
515thousands of users.
Guido van Rossuma7925f11994-01-26 10:20:16 +0000516
Guido van Rossumb0a2ce51995-08-28 19:41:35 +0000517Another statistic is the number of accesses to the Python WWW server.
518Have a look at <URL:http://www.python.org/stats/>.
519
Guido van Rossuma7925f11994-01-26 10:20:16 +00005202.2. Q. Have any significant projects been done in Python?
521
522A. Here at CWI (the home of Python), we have written a 20,000 line
523authoring environment for transportable hypermedia presentations, a
Guido van Rossum5333c5d1994-04-11 11:06:22 +00005245,000 line multimedia teleconferencing tool, as well as many many
525smaller programs.
Guido van Rossuma7925f11994-01-26 10:20:16 +0000526
527The University of Virginia uses Python to control a virtual reality
528engine. Contact: Matt Conway <conway@virginia.edu>.
529
Guido van Rossuma6c707c1995-01-02 17:32:28 +0000530The ILU project at Xerox PARC can generate Python glue for ILU
531interfaces. See <URL:ftp://ftp.parc.xerox.com/pub/ilu/ilu.html>.
532
Guido van Rossumac3f2121995-04-10 11:53:42 +0000533The University of California, Irvine uses a student administration
534system called TELE-Vision written entirely in Python. Contact: Ray
535Price <rlprice@uci.edu>.
536
Guido van Rossumb0a2ce51995-08-28 19:41:35 +0000537See also the next question.
538
Guido van Rossumb34e8aa1994-09-23 14:20:38 +0000539If you have done a significant project in Python that you'd like to be
540included in the list above, send me email!
Guido van Rossuma7925f11994-01-26 10:20:16 +0000541
5422.3. Q. Are there any commercial projects going on using Python?
543
544A. Several companies have revealed to me that they are planning or
Guido van Rossum796b2591995-01-20 23:05:52 +0000545considering use of Python in a future product.
Guido van Rossumb34e8aa1994-09-23 14:20:38 +0000546
Guido van Rossumbf8e7d51995-08-28 03:09:13 +0000547Sunrise Software has a product out using Python -- they use Python
Guido van Rossumac3f2121995-04-10 11:53:42 +0000548for a GUI management application and an SNMP network management
549application. Contact: <info@sunrise.com>.
Guido van Rossuma7925f11994-01-26 10:20:16 +0000550
Guido van Rossuma6c707c1995-01-02 17:32:28 +0000551Infoseek uses Python to implement their commercial WWW information
552retrieval service <URL:http://www.infoseek.com/>. Contact:
553<info@infoseek.com>.
Guido van Rossumf8c76d01994-08-17 12:19:53 +0000554
Guido van Rossuma6c707c1995-01-02 17:32:28 +0000555Paul Everitt of Connecting Minds is planning a Lotus Notes gateway.
556Contact: <Paul.Everitt@cminds.com>. Or see their WWW server
557<URL:http://www.cminds.com/>.
558
Guido van Rossumac3f2121995-04-10 11:53:42 +0000559KaPRE in Boulder, CO is using Python for on-site customization of C++
560applications, rapid-prototyping/development,
561language-based-components, and possibly more. This is pretty solid:
562Python's being shipped with their tool-set now, to beta sites.
563Contact: <lutz@KaPRE.COM> (Mark Lutz).
564
565Individuals at many other companies are using Python for internal
566development or for as yet unannounced products (witness their
567contributions to the Python mailing list or newsgroup).
Guido van Rossuma7925f11994-01-26 10:20:16 +0000568
Guido van Rossumb0a2ce51995-08-28 19:41:35 +0000569SGI has advertised in the Python list looking for Python programmers
570for a project involving interactive television.
571
572See also the workshop minutes at
573<URL:http://www.python.org/workshops/> -- in general the WWW server is
574more up to date than the FAQ for these issues.
575
Guido van Rossuma7925f11994-01-26 10:20:16 +0000576Python has also been elected as an extension language by MADE, a
577consortium supported by the European Committee's ESPRIT program and
578consisting of Bull, CWI and some other European companies. Contact:
579Ivan Herman <ivan@cwi.nl>.
580
Guido van Rossumb34e8aa1994-09-23 14:20:38 +0000581If you'd like to be included in the list above, send me email!
582
Guido van Rossum95f61a71994-01-26 17:23:37 +00005832.4. Q. How stable is Python?
Guido van Rossuma7925f11994-01-26 10:20:16 +0000584
Guido van Rossum3de27361994-07-25 14:19:33 +0000585A. Very stable. While the current version number would suggest it is
586in the early stages of development, in fact new, stable releases
Guido van Rossume7d92d51995-10-11 18:06:54 +0000587(numbered 0.9.x through 1.3) have been coming out roughly every 3 to
Guido van Rossuma6c707c1995-01-02 17:32:28 +00005886 months for the past four years.
Guido van Rossuma7925f11994-01-26 10:20:16 +0000589
Guido van Rossum8727df41996-09-09 15:16:39 +00005902.5. Q. What new developments are expected for Python in the future?
Guido van Rossuma7925f11994-01-26 10:20:16 +0000591
Guido van Rossum7be34a81995-05-31 15:17:12 +0000592A. See my Work-In-Progress web page, currently at
593<URL:http://www.python.org:~guido/WIP.html>, and the pages for the
594Second Python Workshop (best reached via the Python home page,
Guido van Rossumb0a2ce51995-08-28 19:41:35 +0000595<URL:http://www.python.org/>). Also follow the newsgroup discussions!
Guido van Rossuma6c707c1995-01-02 17:32:28 +0000596
Guido van Rossum8727df41996-09-09 15:16:39 +00005972.6. Q. Is it reasonable to propose incompatible changes to Python?
Guido van Rossum3de27361994-07-25 14:19:33 +0000598
599A. In general, no. There are already millions of lines of Python code
600around the world, so any changes in the language that invalidates more
601than a very small fraction of existing programs has to be frowned
602upon. Even if you can provide a conversion program, there still is
603the problem of updating all documentation. Providing a gradual
604upgrade path is the only way if a feature has to be changed.
605
Guido van Rossum8727df41996-09-09 15:16:39 +00006062.7. Q. What is the future of Python?
Guido van Rossuma7925f11994-01-26 10:20:16 +0000607
Guido van Rossumb0a2ce51995-08-28 19:41:35 +0000608A. If I knew, I'd be rich :-)
609
610Seriously, the formation of the PSA (Pyton Software Activity, see
611<URL:http://www.python.org/psa/>) ensures some kind of support even in
612the (unlikely! event that I'd be hit by a bus (actually, here in the
613US, a car accident would be more likely :-), were to join a nunnery,
614or would be head-hunted. A large number of Python users have become
615experts at Python programming as well as maintenance of the
616implementation, and would easily fill the vacuum created by my
617disappearance.
618
619In the mean time, I have no plans to disappear -- rather, I am
620committed to improving Python, and my current benefactor, CNRI (see
621<URL:http://www.cnri.reston.va.us>) is just as committed to continue
622its support of Python and the PSA. In fact, we have great plans for
623Python -- we just can't tell yet!
624
Guido van Rossum8727df41996-09-09 15:16:39 +00006252.8. Q. What is the PSA, anyway?
Guido van Rossum05151e01995-09-28 13:24:46 +0000626
627A. The Python Software Activity <URL:http://www.python.org/psa/> was
628created by a number of Python aficionados who want Python to be more
629than the product and responsibility of a single individual. It has
630found a home at CNRI <URL:http://www.cnri.reston.va.us>. Anybody who
631wishes Python well should join the PSA.
632
Guido van Rossum8727df41996-09-09 15:16:39 +00006332.9. Q. How do I join the PSA?
Guido van Rossum05151e01995-09-28 13:24:46 +0000634
635A. The full scoop is available on the web, see
636<URL:http://www.python.org/psa/Joining.html>. Summary: send a check
637of at least $50 to CNRI/PSA, 1895 Preston White Drive, Suite 100, in
Guido van Rossum81300541996-09-06 16:37:56 +0000638Reston, VA 20191. Full-time students pay $25. Companies can join for
Guido van Rossum05151e01995-09-28 13:24:46 +0000639a mere $500.
640
Guido van Rossum8727df41996-09-09 15:16:39 +00006412.10. Q. What are the benefits of joining the PSA?
Guido van Rossum05151e01995-09-28 13:24:46 +0000642
643A. Like National Public Radio, if not enough people join, Python will
644wither. Your name will be mentioned on the PSA's web server.
645Workshops organized by the PSA <URL:http://www.python.org/workshops/>
646are only accessible to PSA members (you can join at the door). The
647PSA is working on additional benefits, such as reduced prices for
648books and software, and early access to beta versions of Python.
649
Guido van Rossumb0a2ce51995-08-28 19:41:35 +0000650
6513. Building Python and Other Known Bugs
652=======================================
Guido van Rossuma7925f11994-01-26 10:20:16 +0000653
Guido van Rossum91f60831994-02-15 15:52:27 +00006543.1. Q. Is there a test set?
Guido van Rossuma7925f11994-01-26 10:20:16 +0000655
656A. Yes, simply do "import testall" (or "import autotest" if you aren't
657interested in the output). The standard modules whose name begins
658with "test" together comprise the test. The test set doesn't test
659*all* features of Python but it goes a long way to confirm that a new
660port is actually working. The Makefile contains an entry "make test"
Guido van Rossuma6c707c1995-01-02 17:32:28 +0000661which runs the autotest module. NOTE: if "make test" fails, run the
662tests manually ("import testall") to see what goes wrong before
663reporting the error.
Guido van Rossuma7925f11994-01-26 10:20:16 +0000664
Guido van Rossum91f60831994-02-15 15:52:27 +00006653.2. Q. When running the test set, I get complaints about floating point
Guido van Rossuma7925f11994-01-26 10:20:16 +0000666operations, but when playing with floating point operations I cannot
667find anything wrong with them.
668
669A. The test set makes occasional unwarranted assumptions about the
670semantics of C floating point operations. Until someone donates a
671better floating point test set, you will have to comment out the
672offending floating point tests and execute similar tests manually.
673
Guido van Rossum7be34a81995-05-31 15:17:12 +00006743.3. Q. Link errors after rerunning the configure script.
Guido van Rossum24349991994-02-02 14:12:45 +0000675
676A. It is generally necessary to run "make clean" after a configuration
677change.
678
Guido van Rossum7be34a81995-05-31 15:17:12 +00006793.4. Q. The python interpreter complains about options passed to a
Guido van Rossum24349991994-02-02 14:12:45 +0000680script (after the script name).
681
682A. You are probably linking with GNU getopt, e.g. through -liberty.
Guido van Rossumf8c76d01994-08-17 12:19:53 +0000683Don't. The reason for the complaint is that GNU getopt, unlike System
684V getopt and other getopt implementations, doesn't consider a
685non-option to be the end of the option list. A quick (and compatible)
686fix for scripts is to add "--" to the interpreter, like this:
687
Guido van Rossuma6c707c1995-01-02 17:32:28 +0000688 #! /usr/local/bin/python --
Guido van Rossumf8c76d01994-08-17 12:19:53 +0000689
690You can also use this interactively:
691
Guido van Rossuma6c707c1995-01-02 17:32:28 +0000692 python -- script.py [options]
693
694Note that a working getopt implementation is provided in the Python
695distribution (in Python/getopt.c) but not automatically used.
Guido van Rossum24349991994-02-02 14:12:45 +0000696
Guido van Rossum7be34a81995-05-31 15:17:12 +00006973.5. Q. When building on the SGI, make tries to run python to create
Guido van Rossum24349991994-02-02 14:12:45 +0000698glmodule.c, but python hasn't been built or installed yet.
699
700A. Comment out the line mentioning glmodule.c in Setup and build a
701python without gl first; install it or make sure it is in your $PATH,
702then edit the Setup file again to turn on the gl module, and make
703again. You don't need to do "make clean"; you do need to run "make
704Makefile" in the Modules subdirectory (or just run "make" at the
705toplevel).
706
Guido van Rossum8727df41996-09-09 15:16:39 +00007073.6. Q. I use VPATH but some targets are built in the source directory.
Guido van Rossumb34e8aa1994-09-23 14:20:38 +0000708
709A. On some systems (e.g. Sun), if the target already exists in the
710source directory, it is created there instead of in the build
711directory. This is usually because you have previously built without
712VPATH. Try running "make clobber" in the source directory.
713
Guido van Rossum8727df41996-09-09 15:16:39 +00007143.7. Q. Trouble building or linking with the GNU readline library.
Guido van Rossumb34e8aa1994-09-23 14:20:38 +0000715
Guido van Rossumac3f2121995-04-10 11:53:42 +0000716A. Consider using readline 2.0. Some hints:
Guido van Rossumb34e8aa1994-09-23 14:20:38 +0000717
718- You can use the GNU readline library to improve the interactive user
719interface: this gives you line editing and command history when
Guido van Rossum796b2591995-01-20 23:05:52 +0000720calling python interactively. You need to configure and build the GNU
Guido van Rossumb34e8aa1994-09-23 14:20:38 +0000721readline library before running the configure script. Its sources are
722no longer distributed with Python; you can ftp them from any GNU
Guido van Rossuma6c707c1995-01-02 17:32:28 +0000723mirror site, or from its home site
724<URL:ftp://slc2.ins.cwru.edu/pub/dist/readline-2.0.tar.gz> (or a
725higher version number -- using version 1.x is not recommended). Pass
726the Python configure script the option --with-readline=DIRECTORY where
Guido van Rossumb34e8aa1994-09-23 14:20:38 +0000727DIRECTORY is the absolute pathname of the directory where you've built
728the readline library. Some hints on building and using the readline
729library:
730
731- On SGI IRIX 5, you may have to add the following
732to rldefs.h:
733
Guido van Rossuma6c707c1995-01-02 17:32:28 +0000734 #ifndef sigmask
735 #define sigmask(sig) (1L << ((sig)-1))
736 #endif
Guido van Rossumb34e8aa1994-09-23 14:20:38 +0000737
738- On most systems, you will have to add #include "rldefs.h" to the
739top of several source files, and if you use the VPATH feature, you
740will have to add dependencies of the form foo.o: foo.c to the
741Makefile for several values of foo.
742
743- The readline library requires use of the termcap library. A
744known problem with this is that it contains entry points which
Guido van Rossum061f1821994-10-06 16:03:45 +0000745cause conflicts with the STDWIN and SGI GL libraries. The STDWIN
Guido van Rossumb34e8aa1994-09-23 14:20:38 +0000746conflict can be solved (and will be, in the next release of
Guido van Rossum061f1821994-10-06 16:03:45 +0000747STDWIN) by adding a line saying '#define werase w_erase' to the
748stdwin.h file (in the STDWIN distribution, subdirectory H). The
Guido van Rossumb34e8aa1994-09-23 14:20:38 +0000749GL conflict has been solved in the Python configure script by a
750hack that forces use of the static version of the termcap library.
751
Guido van Rossumac3f2121995-04-10 11:53:42 +0000752- Check the newsgroup gnu.bash.bug <URL:news:gnu.bash.bug> for
753specific problems with the readline library (I don't read this group
754but I've been told that it is the place for readline bugs).
Guido van Rossumb34e8aa1994-09-23 14:20:38 +0000755
Guido van Rossum8727df41996-09-09 15:16:39 +00007563.8. Q. Trouble with socket I/O on older Linux 1.x versions.
Guido van Rossumca318ec1996-06-26 19:50:09 +0000757
758A. Once you've built Python, use it to run the regen.py script in the
759Lib/linux1 directory. Apparently the files as distributed don't match
760the system headers on some Linux versions.
761
Guido van Rossum8727df41996-09-09 15:16:39 +00007623.9. Q. Trouble with prototypes on Ultrix.
Guido van Rossum72eb83c1994-10-07 11:33:28 +0000763
764A. Ultrix cc seems broken -- use gcc, or edit config.h to #undef
765HAVE_PROTOTYPES.
766
Guido van Rossum8a913021996-10-08 17:18:30 +00007673.10. Q. Other trouble building Python on platform X.
Guido van Rossum95f61a71994-01-26 17:23:37 +0000768
Guido van Rossum81300541996-09-06 16:37:56 +0000769A. Please email the details to <guido@cnri.reston.va.us> and I'll look
770into it. Please provide as many details as possible. In particular,
771if you don't tell me what type of computer and what operating system
772(and version) you are using it will be difficult for me to figure out
773what is the matter. If you get a specific error message, please email
774it to me too.
Guido van Rossuma7925f11994-01-26 10:20:16 +0000775
Guido van Rossum8a913021996-10-08 17:18:30 +00007763.11. Q. How to configure dynamic loading on Linux.
Guido van Rossum07779351995-02-07 16:59:56 +0000777
Guido van Rossum8727df41996-09-09 15:16:39 +0000778A. This is now automatic as long as your Linux version uses the ELF
779object format (all recent Linuxes do).
Guido van Rossum07779351995-02-07 16:59:56 +0000780
Guido van Rossum9c5dc291996-10-13 15:48:56 +00007813.12. Q: I can't get shared modules to work on Linux 2.0 (Slackware96)?
782
783A: This is a bug in the Slackware96 release. The fix is simple:
784
785Make sure that there is a link from /lib/libdl.so to /lib/libdl.so.1
786so that the following links are setup:
787
788 /lib/libdl.so -> /lib/libdl.so.1
789 /lib/libdl.so.1 -> /lib/libdl.so.1.7.14
790
7913.13. Q. Errors when linking with a shared library containing C++ code.
Guido van Rossum3fc9d731995-07-25 15:10:56 +0000792
793A. Link the main Python binary with C++. Change the definition of
794LINKCC in Modules/Makefile to be your C++ compiler. You may have to
795edit config.c slightly to make it compilable with C++.
Guido van Rossum07779351995-02-07 16:59:56 +0000796
Guido van Rossum9c5dc291996-10-13 15:48:56 +00007973.14. Q. I built with tkintermodule.c enabled but get "Tkinter not found".
Guido van Rossumb0a2ce51995-08-28 19:41:35 +0000798
799A. Tkinter.py (note: upper case T) lives in a subdirectory of Lib,
800Lib/tkinter. If you are using the default module search path, you
801probably didn't enable the line in the Modules/Setup file defining
802TKPATH; if you use the environment variable PYTHONPATH, you'll have to
803add the proper tkinter subdirectory.
804
Guido van Rossum9c5dc291996-10-13 15:48:56 +00008053.15. Q. I built with Tk 4.0 but Tkinter complains about the Tk version.
Guido van Rossumb0a2ce51995-08-28 19:41:35 +0000806
807A. Several things could cause this. You most likely have a Tk 3.6
808installation that wasn't completely eradicated by the Tk 4.0
809installation (which tends to add "4.0" to its installed files). You
810may have the Tk 3.6 support library installed in the place where the
811Tk 4.0 support files should be (default /usr/local/lib/tk/); you may
812have compiled Python with the old tk.h header file (yes, this actually
813compiles!); you may actually have linked with Tk 3.6 even though Tk
8144.0 is also around. Similar for Tcl 7.4 vs. Tcl 7.3.
815
Guido van Rossum9c5dc291996-10-13 15:48:56 +00008163.16. Q. Link errors for Tcl/Tk symbols when linking with Tcl/Tk.
Guido van Rossum8727df41996-09-09 15:16:39 +0000817
818Quite possibly, there's a version mismatch between the Tcl/Tk header
819files (tcl.h and tk.h) and the tck/tk libraries you are using (the
820"-ltk4.0" and "-ltcl7.4" arguments for _tkinter in the Setup file).
821If you have installed both versions 7.4/4.0 and 7.5/4.1 of Tcl/Tk,
822most likely your header files are for The newer versions, but the
823Setup line for _tkinter in some Python distributions references
8247.4/4.0 by default. Changing this to 7.5/4.1 should take care of
825this.
826
Guido van Rossum9c5dc291996-10-13 15:48:56 +00008273.17. Q. I configured and built Python for Tcl/Tk but "import Tkinter"
Guido van Rossum8727df41996-09-09 15:16:39 +0000828fails.
829
830A. Most likely, you forgot to enable the line in Setup that says
831"TKPATH=:$(DESTLIB)/tkinter".
832
Guido van Rossum9c5dc291996-10-13 15:48:56 +00008333.18. Q. Tk doesn't work right on DEC Alpha.
Guido van Rossumb0a2ce51995-08-28 19:41:35 +0000834
835A. You probably compiled either Tcl, Tk or Python with gcc. Don't.
836For this platform, which has 64-bit integers, gcc is known to generate
837broken code. The standard cc (which comes bundled with the OS!)
838works. If you still prefer gcc, at least try recompiling with cc
839before reporting problems to the newsgroup or the author; if this
840fixes the problem, report the bug to the gcc developers instead. (As
841far as we know, there are no problem with gcc on other platforms --
842the instabilities seem to be restricted to the DEC Alpha.) See also
843question 3.6.
844
Guido van Rossum9c5dc291996-10-13 15:48:56 +00008453.19. Q. Several common system calls are missing from the posix module.
Guido van Rossumca318ec1996-06-26 19:50:09 +0000846
847A. Most likely, *all* test compilations run by the configure script
848are failing for some reason or another. Have a look in config.log to
849see what could be the reason. A common reason is specifying a
850directory to the --with-readline option that doesn't contain the
851libreadline.a file.
852
Guido van Rossum9c5dc291996-10-13 15:48:56 +00008533.20. Q. ImportError: No module named string, on MS Windows.
Guido van Rossumca318ec1996-06-26 19:50:09 +0000854
855A. Most likely, your PYTHONPATH environment variable should be set to
856something like:
857
858set PYTHONPATH=c:\python;c:\python\lib;c:\python\scripts
859
860(assuming Python was installed in c:\python)
861
Guido van Rossum9c5dc291996-10-13 15:48:56 +00008623.21. Q. Core dump on SGI when using the gl module.
Guido van Rossumca318ec1996-06-26 19:50:09 +0000863
864There are conflicts between entry points in the termcap and curses
865libraries and an entry point in the GL library. There's a hack of a
866fix for the termcap library if it's needed for the GNU readline
867library, but it doesn't work when you're using curses. Concluding,
868you can't build a Python binary containing both the curses and gl
869modules.
870
871
Guido van Rossuma7925f11994-01-26 10:20:16 +0000872
8734. Programming in Python
874========================
875
Guido van Rossum24349991994-02-02 14:12:45 +00008764.1. Q. Is there a source code level debugger with breakpoints, step,
877etc.?
878
879A. Yes. Check out module pdb; pdb.help() prints the documentation (or
880you can read it as Lib/pdb.doc). If you use the STDWIN option,
881there's also a windowing interface, wdb. You can write your own
882debugger by using the code for pdb or wdb as an example.
883
8844.2. Q. Can I create an object class with some methods implemented in
Guido van Rossuma7925f11994-01-26 10:20:16 +0000885C and others in Python (e.g. through inheritance)? (Also phrased as:
886Can I use a built-in type as base class?)
887
888A. No, but you can easily create a Python class which serves as a
889wrapper around a built-in object, e.g. (for dictionaries):
890
Guido van Rossuma6c707c1995-01-02 17:32:28 +0000891 # A user-defined class behaving almost identical
892 # to a built-in dictionary.
893 class UserDict:
894 def __init__(self): self.data = {}
895 def __repr__(self): return repr(self.data)
896 def __cmp__(self, dict):
897 if type(dict) == type(self.data):
898 return cmp(self.data, dict)
899 else:
900 return cmp(self.data, dict.data)
901 def __len__(self): return len(self.data)
902 def __getitem__(self, key): return self.data[key]
903 def __setitem__(self, key, item): self.data[key] = item
904 def __delitem__(self, key): del self.data[key]
905 def keys(self): return self.data.keys()
906 def items(self): return self.data.items()
907 def values(self): return self.data.values()
908 def has_key(self, key): return self.data.has_key(key)
Guido van Rossuma7925f11994-01-26 10:20:16 +0000909
Guido van Rossum24349991994-02-02 14:12:45 +00009104.3. Q. Is there a curses/termcap package for Python?
Guido van Rossuma7925f11994-01-26 10:20:16 +0000911
Guido van Rossuma6c707c1995-01-02 17:32:28 +0000912A. Yes -- Lance Ellinghaus has written a module that interfaces to
Guido van Rossumb34e8aa1994-09-23 14:20:38 +0000913System V's "ncurses". If you know a little curses and some Python,
Guido van Rossuma6c707c1995-01-02 17:32:28 +0000914it's straightforward to use. It is part of the standard Python
915distribution, but not configured by default -- you must enable it by
916editing Modules/Setup. It requires a System V curses implementation.
Guido van Rossumb34e8aa1994-09-23 14:20:38 +0000917
918You could also consider using the "alfa" (== character cell) version
Guido van Rossuma6c707c1995-01-02 17:32:28 +0000919of STDWIN. (Standard Window System Interface, a portable windowing
920system interface by myself <URL:ftp://ftp.cwi.nl/pub/stdwin/>.) This
Guido van Rossumb34e8aa1994-09-23 14:20:38 +0000921will also prepare your program for porting to windowing environments
922such as X11 or the Macintosh.
Guido van Rossuma7925f11994-01-26 10:20:16 +0000923
Guido van Rossum24349991994-02-02 14:12:45 +00009244.4. Q. Is there an equivalent to C's onexit() in Python?
Guido van Rossuma7925f11994-01-26 10:20:16 +0000925
926A. Yes, if you import sys and assign a function to sys.exitfunc, it
927will be called when your program exits, is killed by an unhandled
928exception, or (on UNIX) receives a SIGHUP or SIGTERM signal.
929
Guido van Rossum24349991994-02-02 14:12:45 +00009304.5. Q. When I define a function nested inside another function, the
Guido van Rossuma7925f11994-01-26 10:20:16 +0000931nested function seemingly can't access the local variables of the
932outer function. What is going on? How do I pass local data to a
933nested function?
934
935A. Python does not have arbitrarily nested scopes. When you need to
936create a function that needs to access some data which you have
937available locally, create a new class to hold the data and return a
938method of an instance of that class, e.g.:
939
Guido van Rossuma6c707c1995-01-02 17:32:28 +0000940 class MultiplierClass:
941 def __init__(self, factor):
942 self.factor = factor
943 def multiplier(self, argument):
944 return argument * self.factor
Guido van Rossuma7925f11994-01-26 10:20:16 +0000945
Guido van Rossuma6c707c1995-01-02 17:32:28 +0000946 def generate_multiplier(factor):
947 return MultiplierClass(factor).multiplier
Guido van Rossuma7925f11994-01-26 10:20:16 +0000948
Guido van Rossuma6c707c1995-01-02 17:32:28 +0000949 twice = generate_multiplier(2)
950 print twice(10)
951 # Output: 20
952
953An alternative solution uses default arguments, e.g.:
954
955 def generate_multiplier(factor):
956 def multiplier(arg, fact = factor):
957 return arg*fact
958 return multiplier
959
960 twice = generate_multiplier(2)
961 print twice(10)
962 # Output: 20
Guido van Rossuma7925f11994-01-26 10:20:16 +0000963
Guido van Rossum24349991994-02-02 14:12:45 +00009644.6. Q. How do I iterate over a sequence in reverse order?
Guido van Rossuma7925f11994-01-26 10:20:16 +0000965
966A. If it is a list, the fastest solution is
967
Guido van Rossuma6c707c1995-01-02 17:32:28 +0000968 list.reverse()
969 try:
970 for x in list:
971 "do something with x"
972 finally:
973 list.reverse()
Guido van Rossuma7925f11994-01-26 10:20:16 +0000974
975This has the disadvantage that while you are in the loop, the list
976is temporarily reversed. If you don't like this, you can make a copy.
977This appears expensive but is actually faster than other solutions:
978
Guido van Rossuma6c707c1995-01-02 17:32:28 +0000979 rev = list[:]
980 rev.reverse()
981 for x in rev:
982 <do something with x>
Guido van Rossuma7925f11994-01-26 10:20:16 +0000983
984If it isn't a list, a more general but slower solution is:
985
Guido van Rossuma6c707c1995-01-02 17:32:28 +0000986 i = len(list)
987 while i > 0:
988 i = i-1
989 x = list[i]
990 <do something with x>
Guido van Rossuma7925f11994-01-26 10:20:16 +0000991
992A more elegant solution, is to define a class which acts as a sequence
993and yields the elements in reverse order (solution due to Steve
994Majewski):
995
Guido van Rossuma6c707c1995-01-02 17:32:28 +0000996 class Rev:
997 def __init__(self, seq):
998 self.forw = seq
999 def __len__(self):
1000 return len(self.forw)
1001 def __getitem__(self, i):
1002 return self.forw[-(i + 1)]
Guido van Rossuma7925f11994-01-26 10:20:16 +00001003
1004You can now simply write:
1005
Guido van Rossuma6c707c1995-01-02 17:32:28 +00001006 for x in Rev(list):
1007 <do something with x>
Guido van Rossuma7925f11994-01-26 10:20:16 +00001008
Guido van Rossum061f1821994-10-06 16:03:45 +00001009Unfortunately, this solution is slowest of all, due to the method
Guido van Rossuma7925f11994-01-26 10:20:16 +00001010call overhead...
1011
Guido van Rossum24349991994-02-02 14:12:45 +000010124.7. Q. My program is too slow. How do I speed it up?
Guido van Rossuma7925f11994-01-26 10:20:16 +00001013
1014A. That's a tough one, in general. There are many tricks to speed up
1015Python code; I would consider rewriting parts in C only as a last
1016resort. One thing to notice is that function and (especially) method
1017calls are rather expensive; if you have designed a purely OO interface
1018with lots of tiny functions that don't do much more than get or set an
1019instance variable or call another method, you may consider using a
1020more direct way, e.g. directly accessing instance variables. Also see
1021the standard module "profile" (described in the file
1022"python/lib/profile.doc") which makes it possible to find out where
1023your program is spending most of its time (if you have some patience
1024-- the profiling itself can slow your program down by an order of
1025magnitude).
1026
Guido van Rossum24349991994-02-02 14:12:45 +000010274.8. Q. When I have imported a module, then edit it, and import it
Guido van Rossuma7925f11994-01-26 10:20:16 +00001028again (into the same Python process), the changes don't seem to take
1029place. What is going on?
1030
Guido van Rossuma6c707c1995-01-02 17:32:28 +00001031A. For reasons of efficiency as well as consistency, Python only reads
Guido van Rossum796b2591995-01-20 23:05:52 +00001032the module file on the first time a module is imported. (Otherwise a
Guido van Rossuma6c707c1995-01-02 17:32:28 +00001033program consisting of many modules, each of which imports the same
Guido van Rossum796b2591995-01-20 23:05:52 +00001034basic module, would read the basic module over and over again.) To
1035force rereading of a changed module, do this:
Guido van Rossuma7925f11994-01-26 10:20:16 +00001036
Guido van Rossuma6c707c1995-01-02 17:32:28 +00001037 import modname
1038 reload(modname)
Guido van Rossuma7925f11994-01-26 10:20:16 +00001039
1040Warning: this technique is not 100% fool-proof. In particular,
1041modules containing statements like
1042
Guido van Rossuma6c707c1995-01-02 17:32:28 +00001043 from modname import some_objects
Guido van Rossuma7925f11994-01-26 10:20:16 +00001044
Guido van Rossumb34e8aa1994-09-23 14:20:38 +00001045will continue to work with the old version of the imported objects.
Guido van Rossuma7925f11994-01-26 10:20:16 +00001046
Guido van Rossumb34e8aa1994-09-23 14:20:38 +000010474.9. Q. How do I find the current module name?
Guido van Rossum24349991994-02-02 14:12:45 +00001048
Guido van Rossum061f1821994-10-06 16:03:45 +00001049A. A module can find out its own module name by looking at the
Guido van Rossum24349991994-02-02 14:12:45 +00001050(predefined) global variable __name__. If this has the value
Guido van Rossumb34e8aa1994-09-23 14:20:38 +00001051'__main__' you are running as a script.
1052
Guido van Rossuma6c707c1995-01-02 17:32:28 +000010534.10. Q. I have a module in which I want to execute some extra code
1054when it is run as a script. How do I find out whether I am running as
1055a script?
Guido van Rossumb34e8aa1994-09-23 14:20:38 +00001056
1057A. See the previous question. E.g. if you put the following on the
1058last line of your module, main() is called only when your module is
1059running as a script:
Guido van Rossum24349991994-02-02 14:12:45 +00001060
Guido van Rossuma6c707c1995-01-02 17:32:28 +00001061 if __name__ == '__main__': main()
Guido van Rossum24349991994-02-02 14:12:45 +00001062
Guido van Rossuma6c707c1995-01-02 17:32:28 +000010634.11. Q. I try to run a program from the Demo directory but it fails
1064with ImportError: No module named ...; what gives?
Guido van Rossum7ce61c11994-06-13 15:13:56 +00001065
Guido van Rossum061f1821994-10-06 16:03:45 +00001066A. This is probably an optional module (written in C!) which hasn't
1067been configured on your system. This especially happens with modules
Guido van Rossuma6c707c1995-01-02 17:32:28 +00001068like "Tkinter", "stdwin", "gl", "Xt" or "Xm". For Tkinter, STDWIN and
1069many other modules, see Modules/Setup.in for info on how to add these
1070modules to your Python, if it is possible at all. Sometimes you will
1071have to ftp and build another package first (e.g. STDWIN). Sometimes
1072the module only works on specific platforms (e.g. gl only works on SGI
1073machines).
1074
1075NOTE: if the complaint is about "Tkinter" (upper case T) and you have
Guido van Rossumca318ec1996-06-26 19:50:09 +00001076already configured module "tkinter" (lower case t), the solution is
1077*not* to rename tkinter to Tkinter or vice versa. There is probably
1078something wrong with your module search path. Check out the value of
1079sys.path.
Guido van Rossum7ce61c11994-06-13 15:13:56 +00001080
Guido van Rossum061f1821994-10-06 16:03:45 +00001081For X-related modules (Xt and Xm) you will have to do more work: they
1082are currently not part of the standard Python distribution. You will
Guido van Rossuma6c707c1995-01-02 17:32:28 +00001083have to ftp the Extensions tar file, e.g.
Guido van Rossum7be34a81995-05-31 15:17:12 +00001084<URL:ftp://ftp.python.org/pub/python/src/extensions.tar.gz> and follow
1085the instructions there.
Guido van Rossum061f1821994-10-06 16:03:45 +00001086
1087See also the next question.
1088
10894.12. Q. I have successfully built Python with STDWIN but it can't
1090find some modules (e.g. stdwinevents).
Guido van Rossumb34e8aa1994-09-23 14:20:38 +00001091
1092A. There's a subdirectory of the library directory named 'stdwin'
1093which should be in the default module search path. There's a line in
1094Modules/Setup(.in) that you have to enable for this purpose --
Guido van Rossum061f1821994-10-06 16:03:45 +00001095unfortunately in the latest release it's not near the other
Guido van Rossumb34e8aa1994-09-23 14:20:38 +00001096STDWIN-related lines so it's easy to miss it.
1097
10984.13. Q. What GUI toolkits exist for Python?
Guido van Rossum7ce61c11994-06-13 15:13:56 +00001099
1100A. Depending on what platform(s) you are aiming at, there are several.
1101
Guido van Rossumc458e941996-09-11 15:43:13 +00001102Currently supported solutions:
1103
Guido van Rossumb34e8aa1994-09-23 14:20:38 +00001104- There's a neat object-oriented interface to the Tcl/Tk widget set,
Guido van Rossumc458e941996-09-11 15:43:13 +00001105called Tkinter. It is part of the standard Python distribution and
1106well-supported -- all you need to do is build and install Tcl/Tk and
1107enable the _tkinter module and the TKPATH definition in Modules/Setup
1108when building Python. This is probably the easiest to install and
1109use, and the most complete widget set. It is also very likely that in
1110the future the standard Python GUI API will be based on or at least
1111look very much like the Tkinter interface. For more info about Tk,
1112including pointers to the source, see the Tcl/Tk home page
1113<URL:http://www.sunlabs.com/research/tcl/>. Tcl/Tk is now fully
1114portable to the Mac and Windows platforms (NT and 95 only); you need
1115Python 1.4beta3 or later and Tk 4.1patch1 or later.
Guido van Rossum7ce61c11994-06-13 15:13:56 +00001116
1117- There's an interface to X11, including the Athena and Motif widget
1118sets (and a few individual widgets, like Mosaic's HTML widget and
Guido van Rossumc458e941996-09-11 15:43:13 +00001119SGI's GL widget) available from
1120<URL:ftp://ftp.python.org/pub/python/src/X-extension.tar.gz>.
1121Support by Sjoerd Mullender <sjoerd@cwi.nl>.
Guido van Rossum7ce61c11994-06-13 15:13:56 +00001122
Guido van Rossum8a913021996-10-08 17:18:30 +00001123- On top of the X11 interface there's the (recently revived) vpApp
1124toolkit by Per Spilling, now also maintained by Sjoerd Mullender
1125<sjoerd@cwi.nl>. See <URL:ftp://ftp.cwi.nl/pub/sjoerd/vpApp.tar.gz>.
1126
Guido van Rossumc458e941996-09-11 15:43:13 +00001127- The Mac port has a rich and ever-growing set of modules that support
1128the native Mac toolbox calls. See the documentation that comes with
1129the Mac port. See <URL:ftp://ftp.python.org/pub/python/mac>. Support
1130by Jack Jansen <jack@cwi.nl>.
Guido van Rossum7ce61c11994-06-13 15:13:56 +00001131
Guido van Rossumc458e941996-09-11 15:43:13 +00001132- The NT port supported by Mark Hammond <MHammond@skippinet.com.au>
1133(see question 7.2) includes an interface to the Microsoft Foundation
1134Classes and a Python programming environment using it that's written
1135mostly in Python. See
1136<URL:ftp://ftp.python.org/pub/python/pythonwin/>.
Guido van Rossum7ce61c11994-06-13 15:13:56 +00001137
Guido van Rossumc458e941996-09-11 15:43:13 +00001138- There's an object-oriented GUI based on the Microsoft Foundation
1139Classes model called WPY, supported by Jim Ahlstrom <jim@interet.com>.
1140Programs written in WPY run unchanged and with native look and feel on
1141Windows NT/95, Windows 3.1 (using win32s), and on Unix (using Tk).
1142Source and binaries for Windows and Linux are available in
1143<URL:ftp://ftp.python.org/pub/python/wpy/>.
1144
1145Obsolete or minority solutions:
Guido van Rossumbf8e7d51995-08-28 03:09:13 +00001146
Guido van Rossuma8a8d4a1995-03-10 16:19:31 +00001147- There's an interface to wxWindows. wxWindows is a portable GUI
1148class library written in C++. It supports XView, Motif, MS-Windows as
Guido van Rossumc458e941996-09-11 15:43:13 +00001149targets. There is some support for Macs and CURSES as well.
1150wxWindows preserves the look and feel of the underlying graphics
1151toolkit. See the wxPython WWW page at
Guido van Rossuma8a8d4a1995-03-10 16:19:31 +00001152<URL:http://www.aiai.ed.ac.uk/~jacs/wx/wxpython/wxpython.html>.
Guido van Rossumc458e941996-09-11 15:43:13 +00001153Support for wxPython (by Harri Pasanen <pa@tekla.fi>) appears
1154to have a low priority.
Guido van Rossuma8a8d4a1995-03-10 16:19:31 +00001155
Guido van Rossumc458e941996-09-11 15:43:13 +00001156- For SGI IRIX only, there are unsupported interfaces to the complete
1157GL (Graphics Library -- low level but very good 3D capabilities) as
1158well as to FORMS (a buttons-and-sliders-etc package built on top of GL
1159by Mark Overmars -- ftp'able from
1160<URL:ftp://ftp.cs.ruu.nl/pub/SGI/FORMS/>). This is probably also
1161becoming obsolete, as OpenGL takes over.
1162
1163- There's an interface to STDWIN, a platform-independent low-level
1164windowing interface for Mac and X11. This is totally unsupported and
1165rapidly becoming obsolete. The STDWIN sources are at
1166<URL:ftp://ftp.cwi.nl/pub/stdwin/>. (For info about STDWIN 2.0,
1167please refer to Steven Pemberton <steven@cwi.nl> -- I believe it is
1168also dead.)
1169
1170- There once was an interface to WAFE, a Tcl interface to the X11
1171Motif and Athena widget sets. WAFE is at
1172<URL:ftp://ftp.wu-wien.ac.at/pub/src/X11/wafe/>. It's not clear what
1173the status of the Python support is.
Guido van Rossum3fc9d731995-07-25 15:10:56 +00001174
Guido van Rossum0d20cfa1996-07-30 18:53:05 +00001175- (The Fresco port that was mentioned in earlier versions of this FAQ
1176no longer seems to exist. Inquire with Mark Linton.)
Guido van Rossuma8a8d4a1995-03-10 16:19:31 +00001177
Guido van Rossum061f1821994-10-06 16:03:45 +000011784.14. Q. Are there any interfaces to database packages in Python?
Guido van Rossum7ce61c11994-06-13 15:13:56 +00001179
Guido van Rossum8727df41996-09-09 15:16:39 +00001180A. There's a whole collection of them in the contrib area of the ftp
1181server, see <URL:http://www.python.org/ftp/python/contrib/Database/>.
Guido van Rossum796b2591995-01-20 23:05:52 +00001182
Guido van Rossumb34e8aa1994-09-23 14:20:38 +000011834.15. Q. Is it possible to write obfuscated one-liners in Python?
Guido van Rossumc24da7c1994-09-23 14:08:41 +00001184
1185A. Yes. See the following three examples, due to Ulf Bartelt:
1186
Guido van Rossuma6c707c1995-01-02 17:32:28 +00001187 # Primes < 1000
1188 print filter(None,map(lambda y:y*reduce(lambda x,y:x*y!=0,
1189 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 +00001190
Guido van Rossuma6c707c1995-01-02 17:32:28 +00001191 # First 10 Fibonacci numbers
1192 print map(lambda x,f=lambda x,f:(x<=1) or (f(x-1,f)+f(x-2,f)): f(x,f),
1193 range(10))
Guido van Rossumc24da7c1994-09-23 14:08:41 +00001194
Guido van Rossuma6c707c1995-01-02 17:32:28 +00001195 # Mandelbrot set
1196 print (lambda Ru,Ro,Iu,Io,IM,Sx,Sy:reduce(lambda x,y:x+y,map(lambda y,
1197 Iu=Iu,Io=Io,Ru=Ru,Ro=Ro,Sy=Sy,L=lambda yc,Iu=Iu,Io=Io,Ru=Ru,Ro=Ro,i=IM,
1198 Sx=Sx,Sy=Sy:reduce(lambda x,y:x+y,map(lambda x,xc=Ru,yc=yc,Ru=Ru,Ro=Ro,
1199 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
1200 >=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(
1201 64+F(Ru+x*(Ro-Ru)/Sx,yc,0,0,i)),range(Sx))):L(Iu+y*(Io-Iu)/Sy),range(Sy
1202 ))))(-2.1, 0.7, -1.2, 1.2, 30, 80, 24)
1203 # \___ ___/ \___ ___/ | | |__ lines on screen
1204 # V V | |______ columns on screen
1205 # | | |__________ maximum of "iterations"
1206 # | |_________________ range on y axis
1207 # |____________________________ range on x axis
Guido van Rossumc24da7c1994-09-23 14:08:41 +00001208
1209Don't try this at home, kids!
1210
Guido van Rossumb34e8aa1994-09-23 14:20:38 +000012114.16. Q. Is there an equivalent of C's "?:" ternary operator?
Guido van Rossumc24da7c1994-09-23 14:08:41 +00001212
Guido van Rossumb34e8aa1994-09-23 14:20:38 +00001213A. Not directly. In many cases you can mimic a?b:c with "a and b or
1214c", but there's a flaw: if b is zero (or empty, or None -- anything
1215that tests false) then c will be selected instead. In many cases you
1216can prove by looking at the code that this can't happen (e.g. because
1217b is a constant or has a type that can never be false), but in general
1218this can be a problem.
1219
Guido van Rossumc458e941996-09-11 15:43:13 +00001220Tim Peters (who wishes it was Steve Majewski) suggested the following
Guido van Rossumb34e8aa1994-09-23 14:20:38 +00001221solution: (a and [b] or [c])[0]. Because [b] is a singleton list it
1222is never false, so the wrong path is never taken; then applying [0] to
1223the whole thing gets the b or c that you really wanted. Ugly, but it
1224gets you there in the rare cases where it is really inconvenient to
1225rewrite your code using 'if'.
1226
12274.17. Q. My class defines __del__ but it is not called when I delete the
1228object.
1229
1230A. There are several possible reasons for this.
1231
1232- The del statement does not necessarily call __del__ -- it simply
1233decrements the object's reference count, and if this reaches zero
1234__del__ is called.
1235
1236- If your data structures contain circular links (e.g. a tree where
1237each child has a parent pointer and each parent has a list of
1238children) the reference counts will never go back to zero. You'll
Guido van Rossum061f1821994-10-06 16:03:45 +00001239have to define an explicit close() method which removes those
Guido van Rossumb34e8aa1994-09-23 14:20:38 +00001240pointers. Please don't ever call __del__ directly -- __del__ should
Guido van Rossum061f1821994-10-06 16:03:45 +00001241call close() and close() should make sure that it can be called more
Guido van Rossumb34e8aa1994-09-23 14:20:38 +00001242than once for the same object.
1243
1244- If the object has ever been a local variable (or argument, which is
1245really the same thing) to a function that caught an expression in an
1246except clause, chances are that a reference to the object still exists
1247in that function's stack frame as contained in the stack trace.
1248Normally, deleting (better: assigning None to) sys.exc_traceback will
1249take care of this. If you a stack was printed for an unhandled
1250exception in an interactive interpreter, delete sys.last_traceback
1251instead.
1252
1253- There is code that deletes all objects when the interpreter exits,
1254but if your Python has been configured to support threads, it is not
1255called (because other threads may still be active). You can define
Guido van Rossum061f1821994-10-06 16:03:45 +00001256your own cleanup function using sys.exitfunc (see question 4.4).
Guido van Rossumb34e8aa1994-09-23 14:20:38 +00001257
Guido van Rossum8727df41996-09-09 15:16:39 +00001258- Finally, if your __del__ method raises an exception, this will be
1259ignored. Starting with Python 1.4beta3, a warning message is printed
1260to sys.stderr when this happens.
Guido van Rossuma6c707c1995-01-02 17:32:28 +00001261
12624.18. Q. How do I change the shell environment for programs called
1263using os.popen() or os.system()? Changing os.environ doesn't work.
Guido van Rossumb34e8aa1994-09-23 14:20:38 +00001264
1265A. Modifying the environment passed to subshells was left out of the
1266interpreter because there seemed to be no well-established portable
Guido van Rossuma6c707c1995-01-02 17:32:28 +00001267way to do it (in particular, some systems, have putenv(), others have
1268setenv(), and some have none at all).
Guido van Rossumb34e8aa1994-09-23 14:20:38 +00001269
1270However if all you want is to pass environment variables to the
1271commands run by os.system() or os.popen(), there's a simple solution:
1272prefix the command string with a couple of variable assignments and
Guido van Rossum796b2591995-01-20 23:05:52 +00001273export statements. The following would be universal for popen:
Guido van Rossumb34e8aa1994-09-23 14:20:38 +00001274
Guido van Rossuma6c707c1995-01-02 17:32:28 +00001275 import os
1276 from commands import mkarg # nifty routine to add shell quoting
1277 def epopen(cmd, mode, env = {}):
1278 # env is a dictionary of environment variables
1279 prefix = ''
Guido van Rossum796b2591995-01-20 23:05:52 +00001280 for key, value in env.items():
1281 prefix = prefix + '%s=%s\n' % (key, mkarg(value)[1:])
Guido van Rossuma6c707c1995-01-02 17:32:28 +00001282 prefix = prefix + 'export %s\n' % key
1283 return os.popen(prefix + cmd, mode)
Guido van Rossumb34e8aa1994-09-23 14:20:38 +00001284
12854.19. Q. What is a class?
1286
1287A. A class is the particular object type that is created by executing
Guido van Rossum796b2591995-01-20 23:05:52 +00001288a class statement. Class objects are used as templates, to create
1289class instance objects, which embody both the data structure and
1290program routines specific to a datatype.
Guido van Rossumb34e8aa1994-09-23 14:20:38 +00001291
12924.20. Q. What is a method?
1293
1294A. A method is a function that you normally call as
Guido van Rossum796b2591995-01-20 23:05:52 +00001295x.name(arguments...) for some object x. The term is used for methods
Guido van Rossumb34e8aa1994-09-23 14:20:38 +00001296of classes and class instances as well as for methods of built-in
Guido van Rossum796b2591995-01-20 23:05:52 +00001297objects. (The latter have a completely different implementation and
1298only share the way their calls look in Python code.) Methods of
1299classes (and class instances) are defined as functions inside the
1300class definition.
Guido van Rossumb34e8aa1994-09-23 14:20:38 +00001301
13024.21. Q. What is self?
1303
1304A. Self is merely a conventional name for the first argument of a
1305method -- i.e. a function defined inside a class definition. A method
1306defined as meth(self, a, b, c) should be called as x.meth(a, b, c) for
1307some instance x of the class in which the definition occurs;
1308the called method will think it is called as meth(x, a, b, c).
1309
13104.22. Q. What is a unbound method?
1311
1312A. An unbound method is a method defined in a class that is not yet
1313bound to an instance. You get an unbound method if you ask for a
1314class attribute that happens to be a function. You get a bound method
1315if you ask for an instance attribute. A bound method knows which
Guido van Rossum061f1821994-10-06 16:03:45 +00001316instance it belongs to and calling it supplies the instance automatically;
Guido van Rossumb34e8aa1994-09-23 14:20:38 +00001317an unbound method only knows which class it wants for its first
1318argument (a derived class is also OK). Calling an unbound method
1319doesn't "magically" derive the first argument from the context -- you
1320have to provide it explicitly.
1321
Guido van Rossuma6c707c1995-01-02 17:32:28 +000013224.23. Q. How do I call a method defined in a base class from a derived
1323class that overrides it?
Guido van Rossumb34e8aa1994-09-23 14:20:38 +00001324
1325A. If your class definition starts with "class Derived(Base): ..."
1326then you can call method meth defined in Base (or one of Base's base
1327classes) as Base.meth(self, arguments...). Here, Base.meth is an
1328unbound method (see previous question).
1329
Guido van Rossuma6c707c1995-01-02 17:32:28 +000013304.24. Q. How do I call a method from a base class without using the
1331name of the base class?
Guido van Rossumb34e8aa1994-09-23 14:20:38 +00001332
1333A. DON'T DO THIS. REALLY. I MEAN IT. It appears that you could call
1334self.__class__.__bases__[0].meth(self, arguments...) but this fails when
Guido van Rossum061f1821994-10-06 16:03:45 +00001335a doubly-derived method is derived from your class: for its instances,
Guido van Rossumb34e8aa1994-09-23 14:20:38 +00001336self.__class__.__bases__[0] is your class, not its base class -- so
1337(assuming you are doing this from within Derived.meth) you would start
1338a recursive call.
1339
13404.25. Q. How can I organize my code to make it easier to change the base
1341class?
1342
1343A. You could define an alias for the base class, assign the real base
1344class to it before your class definition, and use the alias throughout
1345your class. Then all you have to change is the value assigned to the
1346alias. Incidentally, this trick is also handy if you want to decide
1347dynamically (e.g. depending on availability of resources) which base
1348class to use. Example:
1349
Guido van Rossumc458e941996-09-11 15:43:13 +00001350 BaseAlias = <real base class>
1351 class Derived(BaseAlias):
1352 def meth(self):
1353 BaseAlias.meth(self)
1354 ...
Guido van Rossumb34e8aa1994-09-23 14:20:38 +00001355
13564.26. Q. How can I find the methods or attributes of an object?
1357
1358A. This depends on the object type.
1359
1360For an instance x of a user-defined class, instance attributes are
1361found in the dictionary x.__dict__, and methods and attributes defined
1362by its class are found in x.__class__.__bases__[i].__dict__ (for i in
1363range(len(x.__class__.__bases__))). You'll have to walk the tree of
1364base classes to find *all* class methods and attributes.
1365
1366Many, but not all built-in types define a list of their method names
1367in x.__methods__, and if they have data attributes, their names may be
1368found in x.__members__. However this is only a convention.
1369
1370For more information, read the source of the standard (but
1371undocumented) module newdir.
1372
13734.27. Q. I can't seem to use os.read() on a pipe created with os.popen().
1374
1375A. os.read() is a low-level function which takes a file descriptor (a
1376small integer). os.popen() creates a high-level file object -- the
1377same type used for sys.std{in,out,err} and returned by the builtin
1378open() function. Thus, to read n bytes from a pipe p created with
1379os.popen(), you need to use p.read(n).
Guido van Rossuma7925f11994-01-26 10:20:16 +00001380
Guido van Rossum061f1821994-10-06 16:03:45 +000013814.28. Q. How can I create a stand-alone binary from a Python script?
1382
1383The demo script "Demo/scripts/freeze.py" does what you want. (It's
1384actually not a demo but a support tool -- there is some extra code in
1385the interpreter to accommodate it.) It requires that you have the
1386Python build tree handy, complete with all the lib*.a files.
1387
1388This works by scanning your source recursively for import statements
1389(both forms) and looking for the modules on the standard Python path
1390as well as in the source directory (for built-in modules). It then
1391"compiles" the modules written in Python to C code (array initializers
1392that can be turned into code objects using the marshal module) and
1393creates a custom-made config file that only contains those built-in
1394modules which are actually used in the program. It then compiles the
1395generated C code and links it with the rest of the Python interpreter
1396to form a self-contained binary which acts exactly like your script.
1397
Guido van Rossum7be34a81995-05-31 15:17:12 +00001398Hint: the freeze program only works if your script's filename ends in
1399".py".
Guido van Rossum061f1821994-10-06 16:03:45 +00001400
Guido van Rossum7be34a81995-05-31 15:17:12 +000014014.29. Q. What WWW tools are there for Python?
Guido van Rossum061f1821994-10-06 16:03:45 +00001402
Guido van Rossum8727df41996-09-09 15:16:39 +00001403A. See the chapter titled "Internet and WWW" in the Library Reference
1404Manual. There's also a web browser written in Python, called Grail --
1405see <URL:http://monty.cnri.reston.va.us/grail/>.
Guido van Rossum061f1821994-10-06 16:03:45 +00001406
1407Steve Miale <smiale@cs.indiana.edu> has written a modular WWW browser
1408called Dancer. An alpha version can be FTP'ed from
Guido van Rossuma6c707c1995-01-02 17:32:28 +00001409<URL:ftp://ftp.cs.indiana.edu/pub/smiale/dancer.tar.gz>. (There are a
1410few articles about Dancer in the (hyper)mail archive
1411<URL:http://www.cwi.nl/~guido/hypermail/python-1994q3/index.html>.)
Guido van Rossum061f1821994-10-06 16:03:45 +00001412
Guido van Rossum7be34a81995-05-31 15:17:12 +000014134.30. Q. How do I run a subprocess with pipes connected to both input
Guido van Rossum796b2591995-01-20 23:05:52 +00001414and output?
1415
1416A. This is really a UNIX question. Also, in general, it is unwise to
1417do so, because you can easily cause a deadlock where the parent
1418process is blocked waiting for output from the child, while the child
1419is blocked waiting for input from the child. This can be caused
1420because the parent expects the child to output more text than it does,
1421or it can be caused by data being stuck in stdio buffers due to lack
1422of flushing. The Python parent can of course explicitly flush the data
1423it sends to the child before it reads any output, but if the child is
1424a naive C program it can easily have been written to never explicitly
1425flush its output, even if it is interactive, since flushing is
1426normally automatic.
1427
1428In many cases, all you really need is to run some data through a
1429command and get the result back. Unless the data is infinite in size,
1430the easiest (and often the most efficient!) way to do this is to write
1431it to a temporary file and run the command with that temporary file as
1432input. The standard module tempfile exports a function mktemp() which
1433generates unique temporary file names.
1434
1435If after reading all of the above you still want to connect two pipes
1436to a subprocess's standard input and output, here's a simple solution,
1437due to Jack Jansen:
1438
Guido van Rossume7d92d51995-10-11 18:06:54 +00001439 import os
1440 import sys
1441 import string
Guido van Rossum796b2591995-01-20 23:05:52 +00001442
Guido van Rossume7d92d51995-10-11 18:06:54 +00001443 MAXFD = 100 # Max number of file descriptors in this system
Guido van Rossum796b2591995-01-20 23:05:52 +00001444
Guido van Rossume7d92d51995-10-11 18:06:54 +00001445 def popen2(cmd):
1446 cmd = string.split(cmd)
1447 p2cread, p2cwrite = os.pipe()
1448 c2pread, c2pwrite = os.pipe()
1449 pid = os.fork()
1450 if pid == 0:
1451 # Child
1452 os.close(0)
1453 os.close(1)
Guido van Rossumca318ec1996-06-26 19:50:09 +00001454 if os.dup(p2cread) != 0:
Guido van Rossume7d92d51995-10-11 18:06:54 +00001455 sys.stderr.write('popen2: bad read dup\n')
Guido van Rossumca318ec1996-06-26 19:50:09 +00001456 if os.dup(c2pwrite) != 1:
Guido van Rossume7d92d51995-10-11 18:06:54 +00001457 sys.stderr.write('popen2: bad write dup\n')
1458 for i in range(3, MAXFD):
1459 try:
1460 os.close(i)
1461 except:
1462 pass
1463 try:
1464 os.execv(cmd[0], cmd)
1465 finally:
1466 os._exit(1)
1467 os.close(p2cread)
1468 tochild = os.fdopen(p2cwrite, 'w')
1469 os.close(c2pwrite)
1470 fromchild = os.fdopen(c2pread, 'r')
1471 return fromchild, tochild
Guido van Rossum796b2591995-01-20 23:05:52 +00001472
1473Note that many interactive programs (e.g. vi) don't work well with
1474pipes substituted for standard input and output. You will have to use
1475pseudo ttys ("ptys") instead of pipes. There is some undocumented
1476code to use these in the library module pty.py -- I'm afraid you're on
Guido van Rossum3fc9d731995-07-25 15:10:56 +00001477your own here.
1478
1479A different answer is a Python interface to Don Libes' "expect"
1480library. A prerelease of this is available on the Python ftp mirror
1481sites in the contrib subdirectory as expy-0.3.tar.gz, e.g.
1482<URL:ftp://ftp.python.org/pub/python/contrib/expy-0.3.tar.gz>.
Guido van Rossum796b2591995-01-20 23:05:52 +00001483
Guido van Rossum7be34a81995-05-31 15:17:12 +000014844.31. Q. How do I call a function if I have the arguments in a tuple?
Guido van Rossumac3f2121995-04-10 11:53:42 +00001485
1486A. Use the built-in function apply(). For instance,
1487
1488 func(1, 2, 3)
1489
1490is equivalent to
1491
1492 args = (1, 2, 3)
1493 apply(func, args)
1494
1495Note that func(args) is not the same -- it calls func() with exactly
1496one argument, the tuple args, instead of three arguments, the integers
14971, 2 and 3.
1498
Guido van Rossum7be34a81995-05-31 15:17:12 +000014994.32. Q. How do I enable font-lock-mode for Python in Emacs?
1500
1501A. Assuming you're already using python-mode and font-lock-mode
1502separately, all you need to do is put this in your .emacs file:
1503
Guido van Rossume7d92d51995-10-11 18:06:54 +00001504 (defun my-python-mode-hook ()
1505 (setq font-lock-keywords python-font-lock-keywords)
1506 (font-lock-mode 1))
1507 (add-hook 'python-mode-hook 'my-python-mode-hook)
Guido van Rossum7be34a81995-05-31 15:17:12 +00001508
15094.33. Q. Is there an inverse to the format operator (a la C's scanf())?
1510
1511A. Not as such.
1512
1513For simple input parsing, the easiest approach is usually to split
1514the line into whitespace-delimited words using string.split(), and to
1515convert decimal strings to numeric values using string.atoi(),
1516string.atol() or string.atof(). (Python's atoi() is 32-bit and its
1517atol() is arbitrary precision.) If you want to use another delimiter
1518than whitespace, use string.splitfield() (possibly combining it with
1519string.strip() which removes surrounding whitespace from a string).
1520
1521For more complicated input parsing, regular expressions (see module
1522regex) are better suited and more powerful than C's scanf().
1523
Guido van Rossumca318ec1996-06-26 19:50:09 +000015244.34. Q. Can I have Tk events handled while waiting for I/O?
1525
1526A. Yes, and you don't even need threads! But you'll have to
1527restructure your I/O code a bit. Tk has the equivalent of Xt's
1528XtAddInput() call, which allows you to register a callback function
1529which will be called from the Tk mainloop when I/O is possible on a
1530file descriptor. Here's what you need:
1531
Guido van Rossumc458e941996-09-11 15:43:13 +00001532 from Tkinter import tkinter
1533 tkinter.createfilehandler(file, mask, callback)
Guido van Rossumca318ec1996-06-26 19:50:09 +00001534
1535The file may be a Python file or socket object (actually, anything
1536with a fileno() method), or an integer file descriptor. The mask is
1537one of the constants tkinter.READABLE or tkinter.WRITABLE. The
1538callback is called as follows:
1539
Guido van Rossumc458e941996-09-11 15:43:13 +00001540 callback(file, mask)
Guido van Rossumca318ec1996-06-26 19:50:09 +00001541
1542You must unregister the callback when you're done, using
1543
Guido van Rossumc458e941996-09-11 15:43:13 +00001544 tkinter.deletefilehandler(file)
Guido van Rossumca318ec1996-06-26 19:50:09 +00001545
1546Note: since you don't know *how many bytes* are available for reading,
1547you can't use the Python file object's read or readline methods, since
1548these will insist on reading a predefined number of bytes. For
1549sockets, the recv() or recvfrom() methods will work fine; for other
1550files, use os.read(file.fileno(), maxbytecount).
1551
15524.35. Q. How do I write a function with output parameters (call by reference)?
1553
1554A. [Mark Lutz] The thing to remember is that arguments are passed by
1555assignment in Python. Since assignment just creates references to
1556objects, there's no alias between an argument name in the caller and
1557callee, and so no call-by-reference per se. But you can simulate it
1558in a number of ways:
1559
15601) By using global variables; but you probably shouldn't :-)
1561
15622) By passing a mutable (changeable in-place) object:
1563
1564 def func1(a):
1565 a[0] = 'new-value' # 'a' references a mutable list
1566 a[1] = a[1] + 1 # changes a shared object
1567
1568 args = ['old-value', 99]
1569 func1(args)
1570 print args[0], args[1] # output: new-value 100
1571
15723) By return a tuple, holding the final values of arguments:
1573
1574 def func2(a, b):
1575 a = 'new-value' # a and b are local names
1576 b = b + 1 # assigned to new objects
1577 return a, b # return new values
1578
1579 x, y = 'old-value', 99
1580 x, y = func2(x, y)
1581 print x, y # output: new-value 100
1582
15834) And other ideas that fall-out from Python's object model. For
1584 instance, it might be clearer to pass in a mutable dictionary:
1585
1586 def func3(args):
1587 args['a'] = 'new-value' # args is a mutable dictionary
1588 args['b'] = args['b'] + 1 # change it in-place
1589
1590 args = {'a':' old-value', 'b': 99}
1591 func3(args)
1592 print args['a'], args['b']
1593
15945) Or bundle-up values in a class instance:
1595
1596 class callByRef:
1597 def __init__(self, **args):
1598 for (key, value) in args.items():
1599 setattr(self, key, value)
1600
1601 def func4(args):
1602 args.a = 'new-value' # args is a mutable callByRef
1603 args.b = args.b + 1 # change object in-place
1604
1605 args = callByRef(a='old-value', b=99)
1606 func4(args)
1607 print args.a, args.b
1608
1609 But there's probably no good reason to get this complicated :-).
1610
1611[Python' author favors solution 3 in most cases.]
1612
Guido van Rossum0d20cfa1996-07-30 18:53:05 +000016134.36. Q. Please explain the rules for local and global variables in Python.
1614
1615A. [Ken Manheimer] In Python, procedure variables are implicitly
1616global, unless they assigned anywhere within the block. In that case
1617they are implicitly local, and you need to explicitly declare them as
1618'global'.
1619
1620Though a bit surprising at first, a moments consideration explains
1621this. On one hand, requirement of 'global' for assigned vars provides
1622a bar against unintended side-effects. On the other hand, if global
1623were required for all global references, you'd be using global all the
1624time. Eg, you'd have to declare as global every reference to a
1625builtin function, or to a component of an imported module. This
1626clutter would defeat the usefulness of the 'global' declaration for
1627identifying side-effects.
1628
16294.37. Q. How can I have modules that mutually import each other?
1630
1631A. Jim Roskind recommends the following order in each module:
1632
1633First: all exports (like globals, functions, and classes that don't
1634need imported bases classes).
1635
1636Then: all import statements.
1637
1638Finally: all active code (including globals that are initialized from
1639imported values).
1640
1641Python's author doesn't like this approach much because the imports
1642appear in a strange place, but has to admit that it works. His
1643recommended strategy is to avoid all uses of "from <module> import *"
1644(so everything from an imported module is referenced as
1645<module>.<name>) and to place all code inside functions.
1646Initializations of global variables and class variables should use
1647constants or built-in functions only.
1648
Guido van Rossum8727df41996-09-09 15:16:39 +000016494.38. Q. How do I copy an object in Python?
1650
1651A. There is no generic copying operation built into Python, however
1652most object types have some way to create a clone. Here's how for the
1653most common objects:
1654
1655- For immutable objects (numbers, strings, tuples), cloning is
1656unnecessary since their value can't change.
1657
1658- For lists (and generally for mutable sequence types), a clone is
1659created by the expression l[:].
1660
1661- For dictionaries, the following function returns a clone:
1662
Guido van Rossumc458e941996-09-11 15:43:13 +00001663 def dictclone(o):
1664 n = {}
1665 for k in o.keys(): n[k] = o[k]
1666 return n
Guido van Rossum8727df41996-09-09 15:16:39 +00001667
1668- Finally, for generic objects, the "copy" module defines two
1669functions for copying objects. copy.copy(x) returns a copy as shown
1670by the above rules. copy.deepcopy(x) also copies the elements of
1671composite objects. See the section on this module in the Library
1672Reference Manual.
1673
16744.39. Q. How to implement persistent objects in Python? (Persistent ==
1675automatically saved to and restored from disk.)
1676
1677A. The library module "pickle" now solves this in a very general way
1678(though you still can't store things like open files, sockests or
1679windows), and the library module "shelve" uses pickle and (g)dbm to
1680create presistent mappings containing arbitrary Python objects.
1681
Guido van Rossuma4e41a81996-10-22 03:00:43 +000016824.40. Q. I try to use __spam and I get an error about _SomeClassName__spam.
1683
1684A. Variables with double leading underscore are "mangled" to provide a
1685simple but effective way to define class private variables. See the
1686chapter "New in Release 1.4" in the Python Tutorial.
1687
Guido van Rossum061f1821994-10-06 16:03:45 +00001688
Guido van Rossuma7925f11994-01-26 10:20:16 +000016895. Extending Python
1690===================
1691
16925.1. Q. Can I create my own functions in C?
1693
1694A. Yes, you can create built-in modules containing functions,
Guido van Rossum24349991994-02-02 14:12:45 +00001695variables, exceptions and even new types in C. This is explained in
1696the document "Extending and Embedding the Python Interpreter" (the
1697LaTeX file Doc/ext.tex). Also read the chapter on dynamic loading.
Guido van Rossuma7925f11994-01-26 10:20:16 +00001698
16995.2. Q. Can I create my own functions in C++?
1700
1701A. Yes, using the C-compatibility features found in C++. Basically
1702you place extern "C" { ... } around the Python include files and put
1703extern "C" before each function that is going to be called by the
1704Python interpreter. Global or static C++ objects with constructors
1705are probably not a good idea.
1706
Guido van Rossum7ce61c11994-06-13 15:13:56 +000017075.3. Q. How can I execute arbitrary Python statements from C?
1708
1709A. The highest-level function to do this is run_command() which takes
1710a single string argument which is executed in the context of module
1711__main__ and returns 0 for success and -1 when an exception occurred
1712(including SyntaxError). If you want more control, use run_string();
1713see the source for run_command() in Python/pythonrun.c.
1714
17155.4. Q. How can I evaluate an arbitrary Python expression from C?
1716
1717A. Call the function run_string() from the previous question with the
1718start symbol eval_input; it then parses an expression, evaluates it
1719and returns its value. See exec_eval() in Python/bltinmodule.c.
1720
17215.5. Q. How do I extract C values from a Python object?
1722
1723A. That depends on the object's type. If it's a tuple,
1724gettuplesize(o) returns its length and gettupleitem(o, i) returns its
1725i'th item; similar for lists with getlistsize(o) and getlistitem(o,
1726i). For strings, getstringsize(o) returns its length and
1727getstringvalue(o) a pointer to its value (note that Python strings may
1728contain null bytes so strlen() is not safe). To test which type an
1729object is, first make sure it isn't NULL, and then use
1730is_stringobject(o), is_tupleobject(o), is_listobject(o) etc.
1731
17325.6. Q. How do I use mkvalue() to create a tuple of arbitrary length?
1733
1734A. You can't. Use t = newtupleobject(n) instead, and fill it with
1735objects using settupleitem(t, i, o) -- note that this "eats" a
1736reference count of o. Similar for lists with newlistobject(n) and
Guido van Rossumb34e8aa1994-09-23 14:20:38 +00001737setlistitem(l, i, o). Note that you *must* set all the tuple items to
1738some value before you pass the tuple to Python code --
1739newtupleobject(n) initializes them to NULL, which isn't a valid Python
1740value.
1741
Guido van Rossum8727df41996-09-09 15:16:39 +000017425.7. Q. How do I call an object's method from C?
Guido van Rossumb34e8aa1994-09-23 14:20:38 +00001743
1744A. Here's a function (untested) that might become part of the next
1745release in some form. It uses <stdarg.h> to allow passing the
1746argument list on to vmkvalue():
1747
Guido van Rossuma6c707c1995-01-02 17:32:28 +00001748 object *call_method(object *inst, char *methodname, char *format, ...)
1749 {
1750 object *method;
1751 object *args;
1752 object *result;
1753 va_list va;
1754 method = getattr(inst, methodname);
1755 if (method == NULL) return NULL;
1756 va_start(va, format);
1757 args = vmkvalue(format, va);
1758 va_end(va);
1759 if (args == NULL) {
1760 DECREF(method);
1761 return NULL;
1762 }
1763 result = call_object(method, args);
1764 DECREF(method);
1765 DECREF(args);
1766 return result;
1767 }
Guido van Rossumb34e8aa1994-09-23 14:20:38 +00001768
1769This works for any instance that has methods -- whether built-in or
1770user-defined. You are responsible for eventually DECREF'ing the
1771return value.
1772
1773To call, e.g., a file object's "seek" method with arguments 10, 0
1774(assuming the file object pointer is "f"):
1775
Guido van Rossuma6c707c1995-01-02 17:32:28 +00001776 res = call_method(f, "seek", "(OO)", 10, 0);
1777 if (res == NULL) {
1778 ... an exception occurred ...
1779 }
1780 else {
1781 DECREF(res);
1782 }
Guido van Rossumb34e8aa1994-09-23 14:20:38 +00001783
1784Note that since call_object() *always* wants a tuple for the argument
1785list, to call a function without arguments, pass "()" for the format,
1786and to call a function with one argument, surround the argument in
1787parentheses, e.g. "(i)".
1788
Guido van Rossum8727df41996-09-09 15:16:39 +000017895.8. Q. How do I catch the output from print_error()?
Guido van Rossumb34e8aa1994-09-23 14:20:38 +00001790
1791A. (Due to Mark Hammond):
1792
1793* in Python code, define an object that supports the "write()" method.
Guido van Rossumb34e8aa1994-09-23 14:20:38 +00001794
1795* redirect sys.stdout and sys.stderr to this object.
1796
Guido van Rossum061f1821994-10-06 16:03:45 +00001797* call print_error, or just allow the standard traceback mechanism to
Guido van Rossumb34e8aa1994-09-23 14:20:38 +00001798work.
1799
Guido van Rossum061f1821994-10-06 16:03:45 +00001800Then, the output will go wherever your write() method sends it.
Guido van Rossumb34e8aa1994-09-23 14:20:38 +00001801
Guido van Rossum8727df41996-09-09 15:16:39 +000018025.9. Q. How do I access a module written in Python from C?
Guido van Rossumb34e8aa1994-09-23 14:20:38 +00001803
1804A. You can get a pointer to the module object as follows:
1805
Guido van Rossuma6c707c1995-01-02 17:32:28 +00001806 module = import_module("<modulename>");
Guido van Rossumb34e8aa1994-09-23 14:20:38 +00001807
1808If the module hasn't been imported yet (i.e. it is not yet present in
1809sys.modules), this initializes the module; otherwise it simply returns
1810the value of sys.modules["<modulename>"]. Note that it doesn't enter
1811the module into any namespace -- it only ensures it has been
1812initialized and is stored in sys.modules.
1813
1814You can then access the module's attributes (i.e. any name defined in
1815the module) as follows:
1816
Guido van Rossuma6c707c1995-01-02 17:32:28 +00001817 attr = getattr(module, "<attrname>");
Guido van Rossumb34e8aa1994-09-23 14:20:38 +00001818
1819Calling setattr(), to assign to variables in the module, also works.
Guido van Rossum7ce61c11994-06-13 15:13:56 +00001820
Guido van Rossum8727df41996-09-09 15:16:39 +000018215.10. Q. How do I interface to C++ objects from Python?
Guido van Rossumb0a2ce51995-08-28 19:41:35 +00001822
1823A. Depending on your requirements, there are many approaches. Begin
1824by reading the "Extending and Embedding" document (Doc/ext.tex, see
1825also <URL:http://www.python.org/doc/>). Realize that for the Python
1826run-time system, there isn't a whole lot of difference between C and
1827C++ -- so the strategy to build a new Python type around a C structure
1828(pointer) type will also work for C++ objects.
1829
1830Automatic generation of interfaces between Python and C++ is still at
1831the horizon -- parsing C++ header files requires an almost complete
1832C++ parser, and many features aren't easily translated from C++ to
1833Python: certain forms of operator oveloading, function overloading
1834(best approached by a varargs function which explicitly type-checks
1835its arguments), and reference arguments are just a number of features
1836that are hard to translate correctly if at all.
1837
1838The hardest problem is to transparently translate the C++ class
1839hierarchy to Python, so that Python programs derive classes from C++
1840classes. Given suitable constraints, this may be possible, but it
1841would require more space than I have in this FAQ to explain how.
1842In any case, you can get quite a bit done without this, using just the
1843existing classes from Python.
1844
1845If this all seems rather daunting, that may be because it is -- C++
1846isn't exactly a baby to handle without gloves! However, people have
1847accomplished amazing feats of interfacing between Python and C++, and
1848a detailed question posted to the Python list is likely to elicit some
1849interesting and useful responses.
1850
Guido van Rossuma7925f11994-01-26 10:20:16 +00001851
18526. Python's design
1853==================
1854
Guido van Rossum8727df41996-09-09 15:16:39 +000018556.1. Q. Why isn't there a switch or case statement in Python?
Guido van Rossuma7925f11994-01-26 10:20:16 +00001856
1857A. You can do this easily enough with a sequence of
1858if... elif... elif... else. There have been some proposals for switch
Guido van Rossum061f1821994-10-06 16:03:45 +00001859statement syntax, but there is no consensus (yet) on whether and how
Guido van Rossuma7925f11994-01-26 10:20:16 +00001860to do range tests.
1861
Guido van Rossum8727df41996-09-09 15:16:39 +000018626.2. Q. Why does Python use indentation for grouping of statements?
Guido van Rossumc50158e1994-05-31 09:18:50 +00001863
1864A. Basically I believe that using indentation for grouping is
1865extremely elegant and contributes a lot to the clarity of the average
1866Python program. Most people learn to love this feature after a while.
1867Some arguments for it:
1868
1869- Since there are no begin/end brackets there cannot be a disagreement
1870between grouping perceived by the parser and the human reader. I
1871remember long ago seeing a C fragment like this:
1872
Guido van Rossuma6c707c1995-01-02 17:32:28 +00001873 if (x <= y)
1874 x++;
1875 y--;
1876 z++;
Guido van Rossumc50158e1994-05-31 09:18:50 +00001877
1878and staring a long time at it wondering why y was being decremented
1879even for x > y... (And I wasn't a C newbie then either.)
1880
Guido van Rossum7be34a81995-05-31 15:17:12 +00001881- Since there are no begin/end brackets, Python is much less prone to
1882coding-style conflicts. In C there are loads of different ways to
1883place the braces (including the choice whether to place braces around
1884single statements in certain cases, for consistency). If you're used
1885to reading (and writing) code that uses one style, you will feel at
1886least slightly uneasy when reading (or being required to write)
1887another style.
Guido van Rossumc50158e1994-05-31 09:18:50 +00001888
1889- Many coding styles place begin/end brackets on a line by themself.
1890This makes programs considerably longer and wastes valuable screen
1891space, making it harder to get a good overview over a program.
1892Ideally, a function should fit on one basic tty screen (say, 20
1893lines). 20 lines of Python are worth a LOT more than 20 lines of C.
1894This is not solely due to the lack of begin/end brackets (the lack of
1895declarations also helps, and the powerful operations of course), but
1896it certainly helps!
1897
Guido van Rossum8727df41996-09-09 15:16:39 +000018986.3. Q. Why are Python strings immutable?
Guido van Rossum3de27361994-07-25 14:19:33 +00001899
1900A. There are two advantages. One is performance: knowing that a
1901string is immutable makes it easy to lay it out at construction time
1902-- fixed and unchanging storage requirements. (This is also one of
Guido van Rossum061f1821994-10-06 16:03:45 +00001903the reasons for the distinction between tuples and lists.) The
Guido van Rossum3de27361994-07-25 14:19:33 +00001904other is that strings in Python are considered as "elemental" as
1905numbers. No amount of activity will change the value 8 to anything
1906else, and in Python, no amount of activity will change the string
1907"eight" to anything else. (Adapted from Jim Roskind)
1908
Guido van Rossum8727df41996-09-09 15:16:39 +000019096.4. Q. Why don't strings have methods like index() or sort(), like
Guido van Rossum3de27361994-07-25 14:19:33 +00001910lists?
1911
1912A. Good question. Strings currently don't have methods at all
1913(likewise tuples and numbers). Long ago, it seemed unnecessary to
1914implement any of these functions in C, so a standard library module
1915"string" written in Python was created that performs string related
1916operations. Since then, the cry for performance has moved most of
1917them into the built-in module strop (this is imported by module
Guido van Rossumf8c76d01994-08-17 12:19:53 +00001918string, which is still the preferred interface, without loss of
Guido van Rossum3de27361994-07-25 14:19:33 +00001919performance except during initialization). Some of these functions
1920(e.g. index()) could easily be implemented as string methods instead,
1921but others (e.g. sort()) can't, since their interface prescribes that
1922they modify the object, while strings are immutable (see the previous
1923question).
1924
Guido van Rossum8727df41996-09-09 15:16:39 +000019256.5. Q. Why does Python use methods for some functionality
Guido van Rossum3de27361994-07-25 14:19:33 +00001926(e.g. list.index()) but functions for other (e.g. len(list))?
1927
1928A. Functions are used for those operations that are generic for a
1929group of types and which should work even for objects that don't have
1930methods at all (e.g. numbers, strings, tuples). Also, implementing
1931len(), max(), min() as a built-in function is actually less code than
1932implementing them as methods for each type. One can quibble about
1933individual cases but it's really too late to change such things
1934fundamentally now.
1935
Guido van Rossum8727df41996-09-09 15:16:39 +000019366.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 +00001937files)?
1938
1939A. This is caused by the relatively late addition of (user-defined)
1940classes to the language -- the implementation framework doesn't easily
1941allow it. See the answer to question 4.2 for a work-around. This
1942*may* be fixed in the (distant) future.
1943
Guido van Rossum8727df41996-09-09 15:16:39 +000019446.7. Q. Why must 'self' be declared and used explicitly in method
Guido van Rossum3de27361994-07-25 14:19:33 +00001945definitions and calls?
1946
1947A. By asking this question you reveal your C++ background. :-)
1948When I added classes, this was (again) the simplest way of
1949implementing methods without too many changes to the interpreter. I
1950borrowed the idea from Modula-3. It turns out to be very useful, for
1951a variety of reasons.
1952
1953First, it makes it more obvious that you are using a method or
1954instance attribute instead of a local variable. Reading "self.x" or
1955"self.meth()" makes it absolutely clear that an instance variable or
1956method is used even if you don't know the class definition by heart.
1957In C++, you can sort of tell by the lack of a local variable
Guido van Rossum061f1821994-10-06 16:03:45 +00001958declaration (assuming globals are rare or easily recognizable) -- but
Guido van Rossum3de27361994-07-25 14:19:33 +00001959in Python, there are no local variable declarations, so you'd have to
1960look up the class definition to be sure.
1961
1962Second, it means that no special syntax is necessary if you want to
1963explicitly reference or call the method from a particular class. In
1964C++, if you want to use a method from base class that is overridden in
1965a derived class, you have to use the :: operator -- in Python you can
1966write baseclass.methodname(self, <argument list>). This is
1967particularly useful for __init__() methods, and in general in cases
1968where a derived class method wants to extend the base class method of
1969the same name and thus has to call the base class method somehow.
1970
1971Lastly, for instance variables, it solves a syntactic problem with
1972assignment: since local variables in Python are (by definition!) those
1973variables to which a value assigned in a function body (and that
1974aren't explicitly declared global), there has to be some way to tell
1975the interpreter that an assignment was meant to assign to an instance
1976variable instead of to a local variable, and it should preferably be
1977syntactic (for efficiency reasons). C++ does this through
1978declarations, but Python doesn't have declarations and it would be a
1979pity having to introduce them just for this purpose. Using the
1980explicit "self.var" solves this nicely. Similarly, for using instance
1981variables, having to write "self.var" means that references to
1982unqualified names inside a method don't have to search the instance's
1983directories.
1984
Guido van Rossum8727df41996-09-09 15:16:39 +000019856.8. Q. Can't you emulate threads in the interpreter instead of
Guido van Rossumb34e8aa1994-09-23 14:20:38 +00001986relying on an OS-specific thread implementation?
1987
1988A. Unfortunately, the interpreter pushes at least one C stack frame
1989for each Python stack frame. Also, extensions can call back into
1990Python at almost random moments. Therefore a complete threads
1991implementation requires thread support for C.
1992
Guido van Rossum8727df41996-09-09 15:16:39 +000019936.9. Q. Why can't lambda forms contain statements?
Guido van Rossum061f1821994-10-06 16:03:45 +00001994
1995A. Python lambda forms cannot contain statements because Python's
Guido van Rossum796b2591995-01-20 23:05:52 +00001996syntactic framework can't handle statements nested inside expressions.
Guido van Rossum061f1821994-10-06 16:03:45 +00001997
1998However, in Python, this is not a serious problem. Unlike lambda
1999forms in other languages, where they add functionality, Python lambdas
2000are only a shorthand notation if you're too lazy to define a function.
2001
2002Functions are already first class objects in Python, and can be
2003declared in a local scope. Therefore the only advantage of using a
2004lambda form instead of a locally-defined function is that you'll have
2005to invent a name for the function -- but that's just a local variable
2006to which the function object (which is exactly the same type of object
2007that a lambda form yields) is assigned!
2008
Guido van Rossum8727df41996-09-09 15:16:39 +000020096.10. Q. Why don't lambdas have access to variables defined in the
2010containing scope?
2011
Guido van Rossumc458e941996-09-11 15:43:13 +00002012A. Because they are implemented as ordinary functions.
2013See question 4.5 above.
Guido van Rossum8727df41996-09-09 15:16:39 +00002014
20156.11. Q. Why can't recursive functions be defined inside other functions?
2016
2017A. See question 4.5 above.
2018
Guido van Rossum061f1821994-10-06 16:03:45 +000020196.12. Q. Why is there no more efficient way of iterating over a dictionary
2020than first constructing the list of keys()?
2021
2022A. Have you tried it? I bet it's fast enough for your purposes! In
2023most cases such a list takes only a few percent of the space occupied
2024by the dictionary -- it needs only 4 bytes (the size of a pointer) per
2025key -- a dictionary costs 8 bytes per key plus between 30 and 70
2026percent hash table overhead, plus the space for the keys and values --
2027by necessity all keys are unique objects and a string object (the most
2028common key type) costs at least 18 bytes plus the length of the
2029string. Add to that the values contained in the dictionary, and you
2030see that 4 bytes more per item really isn't that much more memory...
2031
2032A call to dict.keys() makes one fast scan over the dictionary
2033(internally, the iteration function does exist) copying the pointers
2034to the key objects into a pre-allocated list object of the right size.
2035The iteration time isn't lost (since you'll have to iterate anyway --
2036unless in the majority of cases your loop terminates very prematurely
2037(which I doubt since you're getting the keys in random order).
2038
2039I don't expose the dictionary iteration operation to Python
2040programmers because the dictionary shouldn't be modified during the
2041entire iteration -- if it is, there's a very small chance that the
2042dictionary is reorganized because the hash table becomes too full, and
2043then the iteration may miss some items and see others twice. Exactly
2044because this only occurs rarely, it would lead to hidden bugs in
2045programs: it's easy never to have it happen during test runs if you
2046only insert or delete a few items per iteration -- but your users will
2047surely hit upon it sooner or later.
2048
Guido van Rossumb0a2ce51995-08-28 19:41:35 +000020496.13. Q. Can Python be compiled to machine code, C or some other language?
2050
2051A. Not easily. Python's high level data types, dynamic typing of
2052objects and run-time invocation of the interpreter (using eval() or
2053exec) together mean that a "compiled" Python program would probably
2054consist mostly of calls into the Python run-time system, even for
2055seemingly simple operations like "x+1". Thus, the performance gain
2056would probably be minimal.
2057
2058Internally, Python source code is always translated into a "virtual
2059machine code" or "byte code" representation before it is interpreted
2060(by the "Python virtual machine" or "bytecode interpreter"). In order
2061to avoid the overhead of parsing and translating modules that rarely
2062change over and over again, this byte code is written on a file whose
2063name ends in ".pyc" whenever a module is parsed (from a file whose
2064name ends in ".py"). When the corresponding .py file is changed, it
2065is parsed and translated again and the .pyc file is rewritten. There
2066is no performance difference once the .pyc file has been loaded (the
2067bytecode read from the .pyc file is exactly the same as the bytecode
2068created by direct translation). The only difference is that loading
2069code from a .pyc file is faster than parsing and translating a .py
2070file, so the presence of precompiled .pyc files will generally improve
2071start-up time of Python scripts. If desired, the Lib/compileall.py
2072module/script can be used to force creation of valid .pyc files for a
2073given set of modules.
2074
2075If you are looking for a way to translate Python programs in order to
2076distribute them in binary form, without the need to distribute the
2077interpreter and library as well, have a look at the freeze.py script
2078in the Tools/freeze directory. This creates a single binary file
2079incorporating your program, the Python interpreter, and those parts of
2080the Python library that are needed by your program. Of course, the
2081resulting binary will only run on the same type of platform as that
2082used to create it.
2083
2084Hints for proper usage of freeze.py:
2085
2086- the script must be in a file whose name ends in .py
2087
2088- you must have installed Python fully:
2089
Guido van Rossume7d92d51995-10-11 18:06:54 +00002090 make install
2091 make libinstall
2092 make inclinstall
2093 make libainstall
Guido van Rossumb0a2ce51995-08-28 19:41:35 +00002094
Guido van Rossum05151e01995-09-28 13:24:46 +000020956.14. Q. Why doesn't Python use proper garbage collection?
2096
2097A. It's looking less and less likely that Python will ever get
2098"automatic" garbage collection (GC). For one thing, unless this were
2099added to C as a standard feature, it's a portability pain in the ass.
2100And yes, I know about the Xerox library. It has bits of assembler
2101code for *most* *common* platforms. Not for all. And although it is
2102mostly transparent, it isn't completely transparent (when I once
2103linked Python with it, it dumped core).
2104
2105"Proper" GC also becomes a problem when Python gets embedded into
2106other applications. While in a stand-alone Python it may be fine to
2107replace the standard malloc() and free() with versions provided by the
2108GC library, an application embedding Python may want to have its *own*
2109substitute for malloc() and free(), and may not want Python's. Right
2110now, Python works with anything that implements malloc() and free()
2111properly.
2112
2113Besides, the predictability of destructor calls in Python is kind of
2114attractive. With GC, the following code (which is fine in current
2115Python) will run out of file descriptors long before it runs out of
2116memory:
2117
Guido van Rossume7d92d51995-10-11 18:06:54 +00002118 for file in <very long list of files>:
2119 f = open(file)
2120 c = file.read(1)
Guido van Rossum05151e01995-09-28 13:24:46 +00002121
2122Using the current reference counting and destructor scheme, each new
2123assignment to f closes the previous file. Using GC, this is not
2124guaranteed. Sure, you can think of ways to fix this. But it's not
2125off-the-shelf technology.
2126
Guido van Rossuma7925f11994-01-26 10:20:16 +00002127
21287. Using Python on non-UNIX platforms
2129=====================================
2130
Guido van Rossum91f60831994-02-15 15:52:27 +000021317.1. Q. Is there a Mac version of Python?
Guido van Rossuma7925f11994-01-26 10:20:16 +00002132
Guido van Rossume530c581995-04-10 12:32:16 +00002133A. Yes, see the "mac" subdirectory of the distribution sites,
Guido van Rossum7be34a81995-05-31 15:17:12 +00002134e.g. <URL:ftp://ftp.python.org/pub/python/mac/>.
Guido van Rossuma7925f11994-01-26 10:20:16 +00002135
Guido van Rossumc458e941996-09-11 15:43:13 +000021367.2. Q. Are there DOS and Windows versions of Python?
Guido van Rossuma7925f11994-01-26 10:20:16 +00002137
Guido van Rossumc458e941996-09-11 15:43:13 +00002138A. Yes. There is a plethora of not-always-compatible versions. See
2139the "pythonwin", "wpy", "nt" and "pc" subdirectories of the
2140distribution sites. A quick comparison:
Guido van Rossuma7925f11994-01-26 10:20:16 +00002141
Guido van Rossumc458e941996-09-11 15:43:13 +00002142PythonWin: Extensive support for the 32-bit native Windows API and GUI
2143building using MFC. Windows NT and Windows 95 only (and Windows
21443.1(1) using win32s, until Microsoft stops supporting it :-( ).
2145<URL:ftp://ftp.python.org/pub/python/pythonwin/>.
Guido van Rossumb34e8aa1994-09-23 14:20:38 +00002146
Guido van Rossumc458e941996-09-11 15:43:13 +00002147WPY: Ports to DOS, Windows 3.1(1), Windows 95, Windows NT and OS/2.
2148Also contains a GUI package that offers portability between Windows
2149(not DOS) and Unix, and native look and feel on both.
2150<URL:ftp://ftp.python.org/pub/python/wpy/>.
Guido van Rossumb34e8aa1994-09-23 14:20:38 +00002151
Guido van Rossumc458e941996-09-11 15:43:13 +00002152NT: Basic ports built straight from the 1.4 distribution for Windows
215395 and Windows NT. This will eventually provide core support for
2154both PythonWin and WPY on all 32-bit Microsoft platforms.
Guido van Rossum3fc9d731995-07-25 15:10:56 +00002155<URL:ftp://ftp.python.org/pub/python/nt/>.
2156
Guido van Rossumc458e941996-09-11 15:43:13 +00002157PC: Old, unsupported ports to DOS, Windows 3.1(1) and OS/2.
2158<URL:ftp://ftp.python.org/pub/python/pc/>.
Guido van Rossum91f60831994-02-15 15:52:27 +00002159
Guido van Rossumc458e941996-09-11 15:43:13 +000021607.3. Q. Is there an OS/2 version of Python?
Guido van Rossum061f1821994-10-06 16:03:45 +00002161
Guido van Rossumc458e941996-09-11 15:43:13 +00002162A. Yes, see the "pc" and "wpy" subdirectory of the distribution sites
2163(see above).
Guido van Rossum061f1821994-10-06 16:03:45 +00002164
Guido van Rossumc458e941996-09-11 15:43:13 +000021657.4. Q. Is there a VMS version of Python?
Guido van Rossume530c581995-04-10 12:32:16 +00002166
Guido van Rossum3fc9d731995-07-25 15:10:56 +00002167A. Donn Cave <donn@cac.washington.edu> did a partial port. The
2168results of his efforts are on public display in
Guido van Rossumbf8e7d51995-08-28 03:09:13 +00002169<<URL:ftp://ftp.python.org/pub/python/contrib/vms.tar.gz/>. Someone
2170else is working on a more complete port, for details watch the list.
Guido van Rossume530c581995-04-10 12:32:16 +00002171
Guido van Rossumc458e941996-09-11 15:43:13 +000021727.5. Q. What about IBM mainframes, or other non-UNIX platforms?
Guido van Rossumb34e8aa1994-09-23 14:20:38 +00002173
Guido van Rossumb0a2ce51995-08-28 19:41:35 +00002174A. I haven't heard about these, except I remember hearing about an
2175OS/9 port and a port to Vxworks (both operating systems for embedded
2176systems). If you're interested in any of this, go directly to the
2177newsgroup and ask there, you may find exactly what you need. For
2178example, a port to MPE/iX 5.0 on HP3000 computers was just announced,
2179see <URL:http://www.allegro.com/software/>.
Guido van Rossumb34e8aa1994-09-23 14:20:38 +00002180
Guido van Rossumc458e941996-09-11 15:43:13 +000021817.6. Q. Where are the source or Makefiles for the non-UNIX versions?
Guido van Rossumb34e8aa1994-09-23 14:20:38 +00002182
Guido van Rossume530c581995-04-10 12:32:16 +00002183A. The standard sources can (almost) be used. Additional sources can
2184be found in the platform-specific subdirectories of the distribution.
Guido van Rossumb34e8aa1994-09-23 14:20:38 +00002185
Guido van Rossumc458e941996-09-11 15:43:13 +000021867.7. Q. What is the status and support for the non-UNIX versions?
Guido van Rossumb34e8aa1994-09-23 14:20:38 +00002187
2188A. I don't have access to most of these platforms, so in general I am
2189dependent on material submitted by volunteers(*). However I strive to
2190integrate all changes needed to get it to compile on a particular
2191platform back into the standard sources, so porting of the next
2192version to the various non-UNIX platforms should be easy.
2193
Guido van Rossuma6c707c1995-01-02 17:32:28 +00002194(*) For the Macintosh, that volunteer is me, with help from Jack
2195Jansen <jack@cwi.nl>.
Guido van Rossumb34e8aa1994-09-23 14:20:38 +00002196
Guido van Rossumc458e941996-09-11 15:43:13 +000021977.8. Q. I have a PC version but it appears to be only a binary.
Guido van Rossum7ce61c11994-06-13 15:13:56 +00002198Where's the library?
Guido van Rossuma7925f11994-01-26 10:20:16 +00002199
2200A. You still need to copy the files from the distribution directory
Guido van Rossum91f60831994-02-15 15:52:27 +00002201"python/Lib" to your system. If you don't have the full distribution,
Guido van Rossume530c581995-04-10 12:32:16 +00002202you can get the file lib<version>.tar.gz from most ftp sites carrying
2203Python; this is a subset of the distribution containing just those
Guido van Rossum7be34a81995-05-31 15:17:12 +00002204files, e.g. <URL:ftp://ftp.python.org/pub/python/src/lib1.1.tar.gz>.
Guido van Rossuma7925f11994-01-26 10:20:16 +00002205
Guido van Rossum5333c5d1994-04-11 11:06:22 +00002206Once you have installed the library, you need to point sys.path to it.
2207Assuming the library is in C:\misc\python\lib, the following commands
2208will point your Python interpreter to it (note the doubled backslashes
2209-- you can also use single forward slashes instead):
2210
Guido van Rossuma6c707c1995-01-02 17:32:28 +00002211 >>> import sys
2212 >>> sys.path.insert(0, 'C:\\misc\\python\\lib')
2213 >>>
Guido van Rossum5333c5d1994-04-11 11:06:22 +00002214
2215For a more permanent effect, set the environment variable PYTHONPATH,
2216as follows (talking to a DOS prompt):
2217
Guido van Rossuma6c707c1995-01-02 17:32:28 +00002218 C> SET PYTHONPATH=C:\misc\python\lib
Guido van Rossum5333c5d1994-04-11 11:06:22 +00002219
Guido van Rossumc458e941996-09-11 15:43:13 +000022207.9. Q. Where's the documentation for the Mac or PC version?
Guido van Rossuma7925f11994-01-26 10:20:16 +00002221
Guido van Rossume530c581995-04-10 12:32:16 +00002222A. The documentation for the Unix version also applies to the Mac and
2223PC versions. Where applicable, differences are indicated in the text.
Guido van Rossuma7925f11994-01-26 10:20:16 +00002224
Guido van Rossumc458e941996-09-11 15:43:13 +000022257.10. Q. The Mac (PC) version doesn't seem to have any facilities for
Guido van Rossum91f60831994-02-15 15:52:27 +00002226creating or editing programs apart from entering it interactively, and
2227there seems to be no way to save code that was entered interactively.
2228How do I create a Python program on the Mac (PC)?
Guido van Rossuma7925f11994-01-26 10:20:16 +00002229
Guido van Rossumb34e8aa1994-09-23 14:20:38 +00002230A. Use an external editor. On the Mac, BBEdit seems to be a popular
2231no-frills text editor. I work like this: start the interpreter; edit
2232a module file using BBedit; import and test it in the interpreter;
2233edit again in BBedit; then use the built-in function reload() to
2234re-read the imported module; etc.
Guido van Rossum5333c5d1994-04-11 11:06:22 +00002235
2236Regarding the same question for the PC, Kurt Wm. Hemr writes: "While
2237anyone with a pulse could certainly figure out how to do the same on
2238MS-Windows, I would recommend the NotGNU Emacs clone for MS-Windows.
2239Not only can you easily resave and "reload()" from Python after making
2240changes, but since WinNot auto-copies to the clipboard any text you
2241select, you can simply select the entire procedure (function) which
2242you changed in WinNot, switch to QWPython, and shift-ins to reenter
2243the changed program unit."