blob: cbbb954814791d51257bb7697281fea54cc1dd16 [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 Rossuma7925f11994-01-26 10:20:16 +00004From: guido@cwi.nl (Guido van Rossum)
Guido van Rossum7be34a81995-05-31 15:17:12 +00005Reply-to: guido@cnri.reston.va.us (Guido van Rossum)
Guido van Rossum05151e01995-09-28 13:24:46 +00006Expires: Wed, 1 Nov 1995 00:00:00 GMT
Guido van Rossume7d92d51995-10-11 18:06:54 +00007Supersedes: <DFMAv8.3Hp@cwi.nl>
Guido van Rossuma7925f11994-01-26 10:20:16 +00008Approved: news-answers-request@MIT.Edu
9
10Archive-name: python-faq/part1
Guido van Rossum07779351995-02-07 16:59:56 +000011Submitted-by: Guido van Rossum <guido@cwi.nl>
Guido van Rossumca318ec1996-06-26 19:50:09 +000012Version: 1.31
13Last-modified: 26 June 1996
Guido van Rossuma7925f11994-01-26 10:20:16 +000014
15This article contains answers to Frequently Asked Questions about
16Python (an object-oriented interpreted programming language -- see
17the answer to question 1.1 for a short overview).
18
Guido van Rossuma6c707c1995-01-02 17:32:28 +000019Copyright 1993-1995 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
27 Reston, VA 22091
28 U.S.A.
Guido van Rossumb0a2ce51995-08-28 19:41:35 +000029Email: <guido@python.org>, <guido@cnri.reston.va.us>, <guido@cwi.nl>
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?
79 1.16. Q. What happened to Tim Peters (the author of python-mode.el, and many
Guido van Rossum7be34a81995-05-31 15:17:12 +000080 entertaining and enlightening pieces of Python email)?
Guido van Rossuma7925f11994-01-26 10:20:16 +000081
82 2. Python in the real world
83 2.1. Q. How many people are using Python?
84 2.2. Q. Have any significant projects been done in Python?
85 2.3. Q. Are there any commercial projects going on using Python?
Guido van Rossum95f61a71994-01-26 17:23:37 +000086 2.4. Q. How stable is Python?
Guido van Rossumb34e8aa1994-09-23 14:20:38 +000087 2.5. Q. When will the next version be released?
88 2.6. Q. What new developments are expected for Python in the future?
89 2.7. Q. Is it reasonable to propose incompatible changes to Python?
Guido van Rossumb0a2ce51995-08-28 19:41:35 +000090 2.8. Q. What is the future of Python?
Guido van Rossum05151e01995-09-28 13:24:46 +000091 2.9. Q. What is the PSA, anyway?
92 2.10. Q. How do I join the PSA?
93 2.11. Q. What are the benefits of joining the PSA?
Guido van Rossuma7925f11994-01-26 10:20:16 +000094
Guido van Rossumb0a2ce51995-08-28 19:41:35 +000095 3. Building Python and Other Known Bugs
Guido van Rossum91f60831994-02-15 15:52:27 +000096 3.1. Q. Is there a test set?
97 3.2. Q. When running the test set, I get complaints about floating point
Guido van Rossuma7925f11994-01-26 10:20:16 +000098 operations, but when playing with floating point operations I cannot
99 find anything wrong with them.
Guido van Rossum7be34a81995-05-31 15:17:12 +0000100 3.3. Q. Link errors after rerunning the configure script.
101 3.4. Q. The python interpreter complains about options passed to a
Guido van Rossum24349991994-02-02 14:12:45 +0000102 script (after the script name).
Guido van Rossum7be34a81995-05-31 15:17:12 +0000103 3.5. Q. When building on the SGI, make tries to run python to create
Guido van Rossum5333c5d1994-04-11 11:06:22 +0000104 glmodule.c, but python hasn't been built or installed yet.
Guido van Rossum7be34a81995-05-31 15:17:12 +0000105 3.6. Q. Python built with gcc for the DEC Alpha doesn't work.
106 3.7. Q. I use VPATH but some targets are built in the source directory.
107 3.8. Q. Trouble building or linking with the GNU readline library.
108 3.9. Q. Trouble building Python on Linux.
Guido van Rossumca318ec1996-06-26 19:50:09 +0000109 3.10. Q. Trouble with socket I/O on Linux.
110 3.11. Q. Trouble with prototypes on Ultrix.
111 3.12. Q. Trouble with posix.listdir on NeXTSTEP 3.2.
112 3.13. Q. Other trouble building Python on platform X.
113 3.14. Q. How to configure dynamic loading on Linux.
114 3.15. Q. Under Solaris 2.x, using GCC, how do I use shared libraries?
115 3.16. Q. Errors when linking with a shared library containing C++ code.
116 3.17. Q. Tk menus or radiobuttons don't work properly in Python 1.2.
117 3.18. Q. I built with tkintermodule.c enabled but get "Tkinter not found".
118 3.19. Q. I built with Tk 4.0 but Tkinter complains about the Tk version.
119 3.20. Q. Tk doesn't work right on DEC Alpha.
120 3.21. Q. Several common system calls are missing from the posix module.
121 3.22. Q. ImportError: No module named string, on MS Windows.
122 3.23. Q. Core dump on SGI when using the gl module.
Guido van Rossuma7925f11994-01-26 10:20:16 +0000123
124 4. Programming in Python
Guido van Rossum24349991994-02-02 14:12:45 +0000125 4.1. Q. Is there a source code level debugger with breakpoints, step,
126 etc.?
127 4.2. Q. Can I create an object class with some methods implemented in
Guido van Rossuma7925f11994-01-26 10:20:16 +0000128 C and others in Python (e.g. through inheritance)? (Also phrased as:
129 Can I use a built-in type as base class?)
Guido van Rossum24349991994-02-02 14:12:45 +0000130 4.3. Q. Is there a curses/termcap package for Python?
131 4.4. Q. Is there an equivalent to C's onexit() in Python?
132 4.5. Q. When I define a function nested inside another function, the
Guido van Rossuma7925f11994-01-26 10:20:16 +0000133 nested function seemingly can't access the local variables of the
134 outer function. What is going on? How do I pass local data to a
135 nested function?
Guido van Rossum24349991994-02-02 14:12:45 +0000136 4.6. Q. How do I iterate over a sequence in reverse order?
137 4.7. Q. My program is too slow. How do I speed it up?
138 4.8. Q. When I have imported a module, then edit it, and import it
Guido van Rossuma7925f11994-01-26 10:20:16 +0000139 again (into the same Python process), the changes don't seem to take
140 place. What is going on?
Guido van Rossumb34e8aa1994-09-23 14:20:38 +0000141 4.9. Q. How do I find the current module name?
Guido van Rossuma6c707c1995-01-02 17:32:28 +0000142 4.10. Q. I have a module in which I want to execute some extra code
143 when it is run as a script. How do I find out whether I am running as
144 a script?
145 4.11. Q. I try to run a program from the Demo directory but it fails
146 with ImportError: No module named ...; what gives?
Guido van Rossum061f1821994-10-06 16:03:45 +0000147 4.12. Q. I have successfully built Python with STDWIN but it can't
148 find some modules (e.g. stdwinevents).
Guido van Rossumb34e8aa1994-09-23 14:20:38 +0000149 4.13. Q. What GUI toolkits exist for Python?
Guido van Rossum061f1821994-10-06 16:03:45 +0000150 4.14. Q. Are there any interfaces to database packages in Python?
Guido van Rossumb34e8aa1994-09-23 14:20:38 +0000151 4.15. Q. Is it possible to write obfuscated one-liners in Python?
152 4.16. Q. Is there an equivalent of C's "?:" ternary operator?
153 4.17. Q. My class defines __del__ but it is not called when I delete the
154 object.
Guido van Rossuma6c707c1995-01-02 17:32:28 +0000155 4.18. Q. How do I change the shell environment for programs called
156 using os.popen() or os.system()? Changing os.environ doesn't work.
Guido van Rossumb34e8aa1994-09-23 14:20:38 +0000157 4.19. Q. What is a class?
158 4.20. Q. What is a method?
159 4.21. Q. What is self?
160 4.22. Q. What is a unbound method?
Guido van Rossuma6c707c1995-01-02 17:32:28 +0000161 4.23. Q. How do I call a method defined in a base class from a derived
162 class that overrides it?
163 4.24. Q. How do I call a method from a base class without using the
164 name of the base class?
Guido van Rossumb34e8aa1994-09-23 14:20:38 +0000165 4.25. Q. How can I organize my code to make it easier to change the base
166 class?
167 4.26. Q. How can I find the methods or attributes of an object?
Guido van Rossum061f1821994-10-06 16:03:45 +0000168 4.27. Q. I can't seem to use os.read() on a pipe created with os.popen().
169 4.28. Q. How can I create a stand-alone binary from a Python script?
Guido van Rossum7be34a81995-05-31 15:17:12 +0000170 4.29. Q. What WWW tools are there for Python?
171 4.30. Q. How do I run a subprocess with pipes connected to both input
Guido van Rossum796b2591995-01-20 23:05:52 +0000172 and output?
Guido van Rossum7be34a81995-05-31 15:17:12 +0000173 4.31. Q. How do I call a function if I have the arguments in a tuple?
174 4.32. Q. How do I enable font-lock-mode for Python in Emacs?
175 4.33. Q. Is there an inverse to the format operator (a la C's scanf())?
Guido van Rossumca318ec1996-06-26 19:50:09 +0000176 4.34. Q. Can I have Tk events handled while waiting for I/O?
177 4.35. Q. How do I write a function with output parameters (call by reference)?
Guido van Rossuma7925f11994-01-26 10:20:16 +0000178
179 5. Extending Python
180 5.1. Q. Can I create my own functions in C?
181 5.2. Q. Can I create my own functions in C++?
Guido van Rossum7ce61c11994-06-13 15:13:56 +0000182 5.3. Q. How can I execute arbitrary Python statements from C?
183 5.4. Q. How can I evaluate an arbitrary Python expression from C?
184 5.5. Q. How do I extract C values from a Python object?
185 5.6. Q. How do I use mkvalue() to create a tuple of arbitrary length?
Guido van Rossum796b2591995-01-20 23:05:52 +0000186 5.7. Q. What happened to mktuple(), featured in an example in the
Guido van Rossumb34e8aa1994-09-23 14:20:38 +0000187 Extensions manual?
188 5.8. Q. How do I call an object's method from C?
189 5.9. Q. How do I catch the output from print_error()?
190 5.10. Q. How do I access a module written in Python from C?
Guido van Rossumb0a2ce51995-08-28 19:41:35 +0000191 5.11. 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 Rossumb0a2ce51995-08-28 19:41:35 +0000194 6.1. Q. Why isn't there a generic copying operation for objects in Python?
Guido van Rossuma7925f11994-01-26 10:20:16 +0000195 6.2. Q. Why isn't there a generic way to implement persistent objects
196 in Python? (Persistent == automatically saved to and restored from
197 disk.)
198 6.3. Q. Why isn't there a switch or case statement in Python?
Guido van Rossumc50158e1994-05-31 09:18:50 +0000199 6.4. Q. Why does Python use indentation for grouping of statements?
Guido van Rossum3de27361994-07-25 14:19:33 +0000200 6.5. Q. Why are Python strings immutable?
201 6.6. Q. Why don't strings have methods like index() or sort(), like
202 lists?
203 6.7. Q. Why does Python use methods for some functionality
204 (e.g. list.index()) but functions for other (e.g. len(list))?
205 6.8. Q. Why can't I derive a class from built-in types (e.g. lists or
206 files)?
207 6.9. Q. Why must 'self' be declared and used explicitly in method
208 definitions and calls?
Guido van Rossum061f1821994-10-06 16:03:45 +0000209 6.10. Q. Can't you emulate threads in the interpreter instead of
210 relying on an OS-specific thread implementation?
211 6.11. Q. Why can't lambda forms contain statements?
212 6.12. Q. Why is there no more efficient way of iterating over a dictionary
213 than first constructing the list of keys()?
Guido van Rossumb0a2ce51995-08-28 19:41:35 +0000214 6.13. Q. Can Python be compiled to machine code, C or some other language?
Guido van Rossum05151e01995-09-28 13:24:46 +0000215 6.14. Q. Why doesn't Python use proper garbage collection?
Guido van Rossuma7925f11994-01-26 10:20:16 +0000216
217 7. Using Python on non-UNIX platforms
Guido van Rossum91f60831994-02-15 15:52:27 +0000218 7.1. Q. Is there a Mac version of Python?
219 7.2. Q. Is there a DOS version of Python?
Guido van Rossume530c581995-04-10 12:32:16 +0000220 7.3. Q. Is there a Windows 3.1(1) version of Python?
Guido van Rossum91f60831994-02-15 15:52:27 +0000221 7.4. Q. Is there a Windows NT version of Python?
Guido van Rossume530c581995-04-10 12:32:16 +0000222 7.5. Q. Is there a Windows 95 version of Python?
223 7.6. Q. Is there an OS/2 version of Python?
224 7.7. Q. Is there a VMS version of Python?
Guido van Rossumbf8e7d51995-08-28 03:09:13 +0000225 7.8. Q. What about IBM mainframes, or other non-UNIX platforms?
Guido van Rossume530c581995-04-10 12:32:16 +0000226 7.9. Q. Where are the source or Makefiles for the non-UNIX versions?
227 7.10. Q. What is the status and support for the non-UNIX versions?
228 7.11. Q. I have a PC version but it appears to be only a binary.
Guido van Rossumb34e8aa1994-09-23 14:20:38 +0000229 Where's the library?
Guido van Rossume530c581995-04-10 12:32:16 +0000230 7.12. Q. Where's the documentation for the Mac or PC version?
231 7.13. Q. The Mac (PC) version doesn't seem to have any facilities for
Guido van Rossumb34e8aa1994-09-23 14:20:38 +0000232 creating or editing programs apart from entering it interactively, and
233 there seems to be no way to save code that was entered interactively.
234 How do I create a Python program on the Mac (PC)?
Guido van Rossuma7925f11994-01-26 10:20:16 +0000235
236To find a particular question, search for the question number followed
237by a dot, a space, and a Q at the beginning of a line (e.g. to find
238question 4.2 in vi, type /^4\.2\. Q/).
239
240
2411. General information and availability
Guido van Rossumb0a2ce51995-08-28 19:41:35 +0000242 =======================================
Guido van Rossuma7925f11994-01-26 10:20:16 +0000243
2441.1. Q. What is Python?
245
246A. Python is an interpreted, interactive, object-oriented programming
247language. It incorporates modules, exceptions, dynamic typing, very
248high level dynamic data types, and classes. Python combines
249remarkable power with very clear syntax. It has interfaces to many
250system calls and libraries, as well as to various window systems, and
251is extensible in C or C++. It is also usable as an extension language
252for applications that need a programmable interface. Finally, Python
Guido van Rossuma6c707c1995-01-02 17:32:28 +0000253is portable: it runs on many brands of UNIX, on the Mac, and on PCs
254under MS-DOS, Windows, Windows NT, and OS/2.
Guido van Rossuma7925f11994-01-26 10:20:16 +0000255
256To find out more, the best thing to do is to start reading the
257tutorial from the documentation set (see a few questions further
258down).
259
2601.2. Q. Why is it called Python?
261
Guido van Rossum796b2591995-01-20 23:05:52 +0000262A. Apart from being a computer scientist, I'm also a fan of "Monty
Guido van Rossuma7925f11994-01-26 10:20:16 +0000263Python's Flying Circus" (a BBC comedy series from the seventies, in
Guido van Rossum5333c5d1994-04-11 11:06:22 +0000264the -- unlikely -- case you didn't know). It occurred to me one day
265that I needed a name that was short, unique, and slightly mysterious.
266And I happened to be reading some scripts from the series at the
267time... So then I decided to call my language Python. But Python is
268not a joke. And don't you associate it with dangerous reptiles
Guido van Rossuma6c707c1995-01-02 17:32:28 +0000269either! (If you need an icon, use an image of the 16-ton weight from
270the TV series or of a can of SPAM :-)
Guido van Rossuma7925f11994-01-26 10:20:16 +0000271
2721.3. Q. How do I obtain a copy of the Python source?
273
Guido van Rossuma6c707c1995-01-02 17:32:28 +0000274A. The latest complete Python source distribution is always available
275by anonymous ftp, e.g.
Guido van Rossum7be34a81995-05-31 15:17:12 +0000276<URL:ftp://ftp.python.org/pub/python/src/python1.2.tar.gz>. It is a
Guido van Rossume530c581995-04-10 12:32:16 +0000277gzipped tar file containing the complete C source, LaTeX
278documentation, Python library modules, example programs, and several
279useful pieces of freely distributable software. This will compile and
280run out of the box on most UNIX platforms. (See section 7 for
281non-UNIX information.)
Guido van Rossuma6c707c1995-01-02 17:32:28 +0000282
283Occasionally a set of patches is issued which has to be applied using
284the patch program. These patches are placed in the same directory,
Guido van Rossum7be34a81995-05-31 15:17:12 +0000285e.g. <URL:ftp://ftp.python.org/pub/python/src/patch1.1.1>. (At the time
Guido van Rossume530c581995-04-10 12:32:16 +0000286of writing, no patches exist for 1.2.)
Guido van Rossuma6c707c1995-01-02 17:32:28 +0000287
288An index of said ftp directory can be found in the file INDEX. An
289HTML version of the index can be found in the file index.html,
Guido van Rossum7be34a81995-05-31 15:17:12 +0000290<URL:ftp://ftp.python.org/pub/python/index.html>.
Guido van Rossuma7925f11994-01-26 10:20:16 +0000291
2921.4. Q. How do I get documentation on Python?
293
Guido van Rossuma8a8d4a1995-03-10 16:19:31 +0000294A. The LaTeX source for the documentation is part of the source
295distribution. If you don't have LaTeX, the latest Python
296documentation set is always available by anonymous ftp, e.g.
Guido van Rossum7be34a81995-05-31 15:17:12 +0000297<URL:ftp://ftp.python.org/pub/python/doc/postscript.tar.gz>. It is a
Guido van Rossuma6c707c1995-01-02 17:32:28 +0000298gzipped tar file containing PostScript files of the reference manual,
Guido van Rossum3de27361994-07-25 14:19:33 +0000299the library manual, and the tutorial. Note that the library manual is
300the most important one of the set, as much of Python's power stems
301from the standard or built-in types, functions and modules, all of
302which are described here. PostScript for a high-level description of
Guido van Rossuma8a8d4a1995-03-10 16:19:31 +0000303Python is in the file nluug-paper.ps (a separate file on the ftp
304site).
Guido van Rossuma7925f11994-01-26 10:20:16 +0000305
Guido van Rossumc50158e1994-05-31 09:18:50 +00003061.5. Q. Are there other ftp sites that mirror the Python distribution?
307
Guido van Rossuma6c707c1995-01-02 17:32:28 +0000308A. The following anonymous ftp sites keep mirrors of the Python
309distribution:
Guido van Rossuma7925f11994-01-26 10:20:16 +0000310
Guido van Rossume7d92d51995-10-11 18:06:54 +0000311USA:
312
313 <URL:ftp://ftp.python.org/pub/python/>
Guido van Rossuma6c707c1995-01-02 17:32:28 +0000314 <URL:ftp://gatekeeper.dec.com/pub/plan/python/>
Guido van Rossume7d92d51995-10-11 18:06:54 +0000315 <URL:ftp://ftp.uu.net/languages/python/>
Guido van Rossuma6c707c1995-01-02 17:32:28 +0000316 <URL:ftp://ftp.wustl.edu/graphics/graphics/sgi-stuff/python/>
Guido van Rossume7d92d51995-10-11 18:06:54 +0000317 <URL:ftp://ftp.sterling.com/programming/languages/python/>
318 <URL:ftp://uiarchive.cso.uiuc.edu/pub/lang/python/>
319 <URL:ftp://ftp.pht.com/mirrors/python/python/>
320
321Europe:
322
323 <URL:ftp://ftp.cwi.nl/pub/python/>
Guido van Rossuma6c707c1995-01-02 17:32:28 +0000324 <URL:ftp://ftp.funet.fi/pub/languages/python/>
325 <URL:ftp://ftp.sunet.se/pub/lang/python/>
Guido van Rossum3fc9d731995-07-25 15:10:56 +0000326 <URL:ftp://unix.hensa.ac.uk/mirrors/uunet/languages/python/>
Guido van Rossumb0a2ce51995-08-28 19:41:35 +0000327 <URL:ftp://ftp.ibp.fr/pub/python/>
Guido van Rossum3fc9d731995-07-25 15:10:56 +0000328 <URL:ftp://ftp.switch.ch/software/sources/python/>
329 <URL:ftp://ftp.informatik.tu-muenchen.de/pub/comp/programming/languages/python/>
Guido van Rossuma7925f11994-01-26 10:20:16 +0000330
Guido van Rossume7d92d51995-10-11 18:06:54 +0000331Australia:
332
333 <URL:ftp://ftp.dstc.edu.au/pub/python/>
334
Guido van Rossuma6c707c1995-01-02 17:32:28 +0000335Or try archie on the string "python".
Guido van Rossuma7925f11994-01-26 10:20:16 +0000336
Guido van Rossumc50158e1994-05-31 09:18:50 +00003371.6. Q. Is there a newsgroup or mailing list devoted to Python?
Guido van Rossuma7925f11994-01-26 10:20:16 +0000338
Guido van Rossuma6c707c1995-01-02 17:32:28 +0000339A. There is a newsgroup, comp.lang.python <URL:news:comp.lang.python>,
340and a mailing list. The newsgroup and mailing list are gatewayed into
341each other -- if you can read news it's unnecessary to subscribe to
342the mailing list. Send e-mail to <python-list-request@cwi.nl> to
Guido van Rossume530c581995-04-10 12:32:16 +0000343(un)subscribe to the mailing list. Hypermail archives of (nearly)
344everything posted to the mailing list (and thus the newsgroup) are
345available on our WWW server,
Guido van Rossuma6c707c1995-01-02 17:32:28 +0000346<URL:http://www.cwi.nl/~guido/hypermail/index.html>. The raw archives
347are also available by ftp, e.g.
Guido van Rossum7be34a81995-05-31 15:17:12 +0000348<URL:ftp://ftp.python.org/pub/python/mail/mailinglist.gz>. The
Guido van Rossume530c581995-04-10 12:32:16 +0000349uncompressed versions of these files can be read with the standard
350UNIX Mail program ("Mail -f file") or with nn ("nn file"). To read
Guido van Rossumbf8e7d51995-08-28 03:09:13 +0000351them using MH, you could use "inc -file file". (The archival service
352has stopped archiving new articles around the end of April 1995. I
353hope to revive it on the PSA server www.python.org sometime in the
354future.)
Guido van Rossuma7925f11994-01-26 10:20:16 +0000355
Guido van Rossuma6c707c1995-01-02 17:32:28 +00003561.7. Q. Is there a WWW page devoted to Python?
357
Guido van Rossum7be34a81995-05-31 15:17:12 +0000358A. Yes, <URL:http://www.python.org/> is the official Python home page.
359At the time of writing, this page is not yet completely operational;
360you may have a look at the old Python home page:
361<URL:http://www.cwi.nl/~guido/Python.html> or at the U.S. copy:
362<URL:http://www.python.org/~guido/Python.html>.
Guido van Rossuma6c707c1995-01-02 17:32:28 +0000363
Guido van Rossuma8a8d4a1995-03-10 16:19:31 +00003641.8. Q. Is the Python documentation available on the WWW?
Guido van Rossuma7925f11994-01-26 10:20:16 +0000365
Guido van Rossum7be34a81995-05-31 15:17:12 +0000366A. Yes, see <URL:http://www.python.org/> (Python's home page). It
367contains pointers to hypertext versions of the whole documentation set
368(as hypertext, not just PostScript).
Guido van Rossuma7925f11994-01-26 10:20:16 +0000369
Guido van Rossuma8a8d4a1995-03-10 16:19:31 +0000370If you wish to browse this collection of HTML files on your own
371machine, it is available bundled up by anonymous ftp,
Guido van Rossum7be34a81995-05-31 15:17:12 +0000372e.g. <URL:ftp://ftp.python.org/pub/python/doc/html.tar.gz>.
Guido van Rossuma8a8d4a1995-03-10 16:19:31 +0000373
374An Emacs-INFO set containing the library manual is also available by
Guido van Rossum7be34a81995-05-31 15:17:12 +0000375ftp, e.g. <URL:ftp://ftp.python.org/pub/python/doc/lib-info.tar.gz>.
Guido van Rossuma8a8d4a1995-03-10 16:19:31 +0000376
3771.9. Q. Is there a book on Python, or will there be one out soon?
378
Guido van Rossum3fc9d731995-07-25 15:10:56 +0000379A. Mark Lutz is writing a Python book for O'Reilly and Associates, to
380be published early 1996. See the outline (in PostScript):
381<URL:http://www.python.org/workshops/1995-05/outlinep.eps>.
Guido van Rossuma8a8d4a1995-03-10 16:19:31 +0000382
3831.10. Q. Are there any published articles about Python that I can quote?
Guido van Rossuma7925f11994-01-26 10:20:16 +0000384
385A. So far the only refereed and published article that describes
386Python in some detail is:
387
388 Guido van Rossum and Jelke de Boer, "Interactively Testing Remote
389 Servers Using the Python Programming Language", CWI Quarterly, Volume
390 4, Issue 4 (December 1991), Amsterdam, pp 283-303.
391
392LaTeX source for this paper is available as part of the Python source
393distribution.
394
Guido van Rossum05151e01995-09-28 13:24:46 +0000395See also the next section (supposedly Aaron Watters' paper has been
396refereed).
397
Guido van Rossuma8a8d4a1995-03-10 16:19:31 +00003981.11. Q. Are there short introductory papers or talks on Python?
Guido van Rossuma6c707c1995-01-02 17:32:28 +0000399
Guido van Rossum05151e01995-09-28 13:24:46 +0000400A. A recent, very entertaining introduction to Python is the tutorial by
401Aaron Watters in UnixWorld Online:
402
403 Aaron R. Watters: "The What, Why, Who, and Where of Python",
404 <URL:http://www.wcmh.com/uworld/archives/95/tutorial/005.html>
405
406An olded paper is:
Guido van Rossuma7925f11994-01-26 10:20:16 +0000407
408 Guido van Rossum, "An Introduction to Python for UNIX/C
409 Programmers", in the proceedings of the NLUUG najaarsconferentie
Guido van Rossum061f1821994-10-06 16:03:45 +0000410 1993 (dutch UNIX users group meeting November 1993).
Guido van Rossuma7925f11994-01-26 10:20:16 +0000411
Guido van Rossuma6c707c1995-01-02 17:32:28 +0000412PostScript for this paper and for the slides used for the accompanying
413presentation is available by ftp as
Guido van Rossum7be34a81995-05-31 15:17:12 +0000414<URL:ftp://ftp.python.org/pub/python/doc/nluug-paper.ps> and
415<URL:ftp://ftp.python.org/pub/python/doc/nluug-slides.ps>, respectively.
Guido van Rossuma6c707c1995-01-02 17:32:28 +0000416
417Slides for a talk on Python that I gave at the Usenix Symposium on
Guido van Rossum05151e01995-09-28 13:24:46 +0000418Very High Level Languages in Santa Fe, NM, USA in October 1994 are
Guido van Rossum7be34a81995-05-31 15:17:12 +0000419available as <URL:ftp://ftp.python.org/pub/python/doc/vhll-slides.ps>.
Guido van Rossuma6c707c1995-01-02 17:32:28 +0000420
Guido van Rossuma8a8d4a1995-03-10 16:19:31 +00004211.12. Q. How does the Python version numbering scheme work?
Guido van Rossum95f61a71994-01-26 17:23:37 +0000422
Guido van Rossum05151e01995-09-28 13:24:46 +0000423A. Python versions are numbered A.B.C or A.B. A is the major version
424number -- it is only incremented for major changes in functionality or
425source structure. B is the minor version number, incremented for less
Guido van Rossum95f61a71994-01-26 17:23:37 +0000426earth-shattering changes to a release. C is the patchlevel -- it is
Guido van Rossum05151e01995-09-28 13:24:46 +0000427incremented for each new patch release. Not all releases have patch
428releases. Note that in the past, patches have added significant
429changes; in fact the changeover from 0.9.9 to 1.0.0 was the first time
430that either A or B changed!
Guido van Rossum95f61a71994-01-26 17:23:37 +0000431
Guido van Rossuma8a8d4a1995-03-10 16:19:31 +0000432Beta versions have an additional suffix of "-beta-N" for some small
433number N. Note that (for instance) all versions labeled 1.2-beta-N
Guido van Rossum05151e01995-09-28 13:24:46 +0000434*precede* the actual release of 1.2. 1.3b1 is short for 1.3-beta-1.
Guido van Rossuma8a8d4a1995-03-10 16:19:31 +0000435
4361.13. Q. How do I get a beta test version of Python?
437
Guido van Rossum05151e01995-09-28 13:24:46 +0000438A. If there are any beta releases, they are published in the normal
439source directory (e.g. <URL:ftp://ftp.python.org/pub/python/src/>).
Guido van Rossuma8a8d4a1995-03-10 16:19:31 +0000440
Guido van Rossum05151e01995-09-28 13:24:46 +00004411.14. Q. Are there copyright restrictions on the use of Python?
Guido van Rossum7ce61c11994-06-13 15:13:56 +0000442
443A. Hardly. You can do anything you want with the source, as long as
Guido van Rossuma6c707c1995-01-02 17:32:28 +0000444you leave the copyrights in, and display those copyrights in any
445documentation about Python that you produce. Also, don't use the
446author's institute's name in publicity without prior written
447permission, and don't hold them responsible for anything (read the
448actual copyright for a precise legal wording).
449
450In particular, if you honor the copyright rules, it's OK to use Python
451for commercial use, to sell copies of Python in source or binary form,
452or to sell products that enhance Python or incorporate Python (or part
453of it) in some form. I would still like to know about all commercial
454use of Python!
Guido van Rossum5333c5d1994-04-11 11:06:22 +0000455
Guido van Rossum05151e01995-09-28 13:24:46 +00004561.15. Q. Why was Python created in the first place?
Guido van Rossum7be34a81995-05-31 15:17:12 +0000457
458A. Here's a *very* brief summary of what got me started:
459
460- I had extensive experience with implementing an interpreted language
461in the ABC group at CWI, and from working with this group I had
462learned a lot about language design. This is the origin of many
463Python features, including the use of indentation for statement
464grouping and the inclusion of very-high-level data types (although the
465details are all different in Python).
466
467- I had a number of gripes about the ABC language, but also liked many
468of its features. It was impossible to extend the ABC language (or its
469implementation) to remedy my complaints -- in fact its lack of
470extensibility was one of its biggest problems.
471
472- I had some experience with using Modula-2+ and talked with the
473designers of Modula-3 (and read the M3 report). M3 is the origin of
474the syntax and semantics used for exceptions, and some other Python
475features.
476
477- I was working in the Amoeba distributed operating system group at
478CWI. We needed a better way to do system administration than by
479writing either C programs or Bourne shell scripts, since Amoeba had
480its own system call interface which wasn't easily accessible from the
Guido van Rossumbf8e7d51995-08-28 03:09:13 +0000481Bourne shell. My experience with error handling in Amoeba made me
482acutely aware of the importance of exceptions as a programming
483language feature.
Guido van Rossum7be34a81995-05-31 15:17:12 +0000484
485- It occurred to me that a scripting language with a syntax like ABC
486but with access to the Amoeba system calls would fill the need. I
487realized that it would be foolish to write an Amoeba-specific
488language, so I decided that I needed a language that was generally
489extensible.
490
491- During the 1989 Christmas holidays, I had a lot of time on my hand,
492so I decided to give it a try. During the next year, while still
493mostly working on it in my own time, Python was used in the Amoeba
494project with increasing success, and the feedback from colleagues made
495me add many early improvements.
496
497- In February 1991, after just over a year of development, I decided
498to post to USENET. The rest is in the Misc/HISTORY file.
499
Guido van Rossum05151e01995-09-28 13:24:46 +00005001.16. Q. What happened to Tim Peters (the author of python-mode.el, and many
Guido van Rossum7be34a81995-05-31 15:17:12 +0000501entertaining and enlightening pieces of Python email)?
502
503A. He worked at KSR (Kendall Square Research, a start-up building a
504new kind of massively parallel processor). When KSR folded down a
505couple of years ago, Tim lost his email access. He hasn't surfaced
506on the net since then.
507
Guido van Rossume7d92d51995-10-11 18:06:54 +0000508 Missing-him-too-ly yours...
Guido van Rossum7be34a81995-05-31 15:17:12 +0000509
Guido van Rossumb0a2ce51995-08-28 19:41:35 +0000510PS: support for Python's Emacs mode (Misc/python-mode.el in the
511distribution) has been taken up by Barry Warsaw. Questions about it
512should be mailed to <python-mode@python.org>.
513
Guido van Rossuma7925f11994-01-26 10:20:16 +0000514
5152. Python in the real world
516===========================
517
5182.1. Q. How many people are using Python?
519
Guido van Rossum5333c5d1994-04-11 11:06:22 +0000520A. I don't know, but the maximum number of simultaneous subscriptions
521to the Python mailing list before it was gatewayed into the newsgroup
522was about 180 (several of which were local redistribution lists). I
523believe that many active Python users don't bother to subscribe to the
524list, and now that there's a newsgroup the mailing list subscription
Guido van Rossum7ce61c11994-06-13 15:13:56 +0000525is even less meaningful. I see new names on the newsgroup all the
526time and my best guess is that there are currently at least several
527thousands of users.
Guido van Rossuma7925f11994-01-26 10:20:16 +0000528
Guido van Rossumb0a2ce51995-08-28 19:41:35 +0000529Another statistic is the number of accesses to the Python WWW server.
530Have a look at <URL:http://www.python.org/stats/>.
531
Guido van Rossuma7925f11994-01-26 10:20:16 +00005322.2. Q. Have any significant projects been done in Python?
533
534A. Here at CWI (the home of Python), we have written a 20,000 line
535authoring environment for transportable hypermedia presentations, a
Guido van Rossum5333c5d1994-04-11 11:06:22 +00005365,000 line multimedia teleconferencing tool, as well as many many
537smaller programs.
Guido van Rossuma7925f11994-01-26 10:20:16 +0000538
539The University of Virginia uses Python to control a virtual reality
540engine. Contact: Matt Conway <conway@virginia.edu>.
541
Guido van Rossuma6c707c1995-01-02 17:32:28 +0000542The ILU project at Xerox PARC can generate Python glue for ILU
543interfaces. See <URL:ftp://ftp.parc.xerox.com/pub/ilu/ilu.html>.
544
Guido van Rossumac3f2121995-04-10 11:53:42 +0000545The University of California, Irvine uses a student administration
546system called TELE-Vision written entirely in Python. Contact: Ray
547Price <rlprice@uci.edu>.
548
Guido van Rossumb0a2ce51995-08-28 19:41:35 +0000549See also the next question.
550
Guido van Rossumb34e8aa1994-09-23 14:20:38 +0000551If you have done a significant project in Python that you'd like to be
552included in the list above, send me email!
Guido van Rossuma7925f11994-01-26 10:20:16 +0000553
5542.3. Q. Are there any commercial projects going on using Python?
555
556A. Several companies have revealed to me that they are planning or
Guido van Rossum796b2591995-01-20 23:05:52 +0000557considering use of Python in a future product.
Guido van Rossumb34e8aa1994-09-23 14:20:38 +0000558
Guido van Rossumbf8e7d51995-08-28 03:09:13 +0000559Sunrise Software has a product out using Python -- they use Python
Guido van Rossumac3f2121995-04-10 11:53:42 +0000560for a GUI management application and an SNMP network management
561application. Contact: <info@sunrise.com>.
Guido van Rossuma7925f11994-01-26 10:20:16 +0000562
Guido van Rossuma6c707c1995-01-02 17:32:28 +0000563Infoseek uses Python to implement their commercial WWW information
564retrieval service <URL:http://www.infoseek.com/>. Contact:
565<info@infoseek.com>.
Guido van Rossumf8c76d01994-08-17 12:19:53 +0000566
Guido van Rossuma6c707c1995-01-02 17:32:28 +0000567Paul Everitt of Connecting Minds is planning a Lotus Notes gateway.
568Contact: <Paul.Everitt@cminds.com>. Or see their WWW server
569<URL:http://www.cminds.com/>.
570
Guido van Rossumac3f2121995-04-10 11:53:42 +0000571KaPRE in Boulder, CO is using Python for on-site customization of C++
572applications, rapid-prototyping/development,
573language-based-components, and possibly more. This is pretty solid:
574Python's being shipped with their tool-set now, to beta sites.
575Contact: <lutz@KaPRE.COM> (Mark Lutz).
576
577Individuals at many other companies are using Python for internal
578development or for as yet unannounced products (witness their
579contributions to the Python mailing list or newsgroup).
Guido van Rossuma7925f11994-01-26 10:20:16 +0000580
Guido van Rossumb0a2ce51995-08-28 19:41:35 +0000581SGI has advertised in the Python list looking for Python programmers
582for a project involving interactive television.
583
584See also the workshop minutes at
585<URL:http://www.python.org/workshops/> -- in general the WWW server is
586more up to date than the FAQ for these issues.
587
Guido van Rossuma7925f11994-01-26 10:20:16 +0000588Python has also been elected as an extension language by MADE, a
589consortium supported by the European Committee's ESPRIT program and
590consisting of Bull, CWI and some other European companies. Contact:
591Ivan Herman <ivan@cwi.nl>.
592
Guido van Rossumb34e8aa1994-09-23 14:20:38 +0000593If you'd like to be included in the list above, send me email!
594
Guido van Rossum95f61a71994-01-26 17:23:37 +00005952.4. Q. How stable is Python?
Guido van Rossuma7925f11994-01-26 10:20:16 +0000596
Guido van Rossum3de27361994-07-25 14:19:33 +0000597A. Very stable. While the current version number would suggest it is
598in the early stages of development, in fact new, stable releases
Guido van Rossume7d92d51995-10-11 18:06:54 +0000599(numbered 0.9.x through 1.3) have been coming out roughly every 3 to
Guido van Rossuma6c707c1995-01-02 17:32:28 +00006006 months for the past four years.
Guido van Rossuma7925f11994-01-26 10:20:16 +0000601
Guido van Rossumb34e8aa1994-09-23 14:20:38 +00006022.5. Q. When will the next version be released?
603
Guido van Rossume7d92d51995-10-11 18:06:54 +0000604A. Version 1.3 is being released on 13 October 1995. It is too early
605to predict when the next release will be necessary, but you can expect
606something awesome within half a year!
Guido van Rossumb34e8aa1994-09-23 14:20:38 +0000607
6082.6. Q. What new developments are expected for Python in the future?
Guido van Rossuma7925f11994-01-26 10:20:16 +0000609
Guido van Rossum7be34a81995-05-31 15:17:12 +0000610A. See my Work-In-Progress web page, currently at
611<URL:http://www.python.org:~guido/WIP.html>, and the pages for the
612Second Python Workshop (best reached via the Python home page,
Guido van Rossumb0a2ce51995-08-28 19:41:35 +0000613<URL:http://www.python.org/>). Also follow the newsgroup discussions!
Guido van Rossuma6c707c1995-01-02 17:32:28 +0000614
Guido van Rossumb34e8aa1994-09-23 14:20:38 +00006152.7. Q. Is it reasonable to propose incompatible changes to Python?
Guido van Rossum3de27361994-07-25 14:19:33 +0000616
617A. In general, no. There are already millions of lines of Python code
618around the world, so any changes in the language that invalidates more
619than a very small fraction of existing programs has to be frowned
620upon. Even if you can provide a conversion program, there still is
621the problem of updating all documentation. Providing a gradual
622upgrade path is the only way if a feature has to be changed.
623
Guido van Rossumb0a2ce51995-08-28 19:41:35 +00006242.8. Q. What is the future of Python?
Guido van Rossuma7925f11994-01-26 10:20:16 +0000625
Guido van Rossumb0a2ce51995-08-28 19:41:35 +0000626A. If I knew, I'd be rich :-)
627
628Seriously, the formation of the PSA (Pyton Software Activity, see
629<URL:http://www.python.org/psa/>) ensures some kind of support even in
630the (unlikely! event that I'd be hit by a bus (actually, here in the
631US, a car accident would be more likely :-), were to join a nunnery,
632or would be head-hunted. A large number of Python users have become
633experts at Python programming as well as maintenance of the
634implementation, and would easily fill the vacuum created by my
635disappearance.
636
637In the mean time, I have no plans to disappear -- rather, I am
638committed to improving Python, and my current benefactor, CNRI (see
639<URL:http://www.cnri.reston.va.us>) is just as committed to continue
640its support of Python and the PSA. In fact, we have great plans for
641Python -- we just can't tell yet!
642
Guido van Rossum05151e01995-09-28 13:24:46 +00006432.9. Q. What is the PSA, anyway?
644
645A. The Python Software Activity <URL:http://www.python.org/psa/> was
646created by a number of Python aficionados who want Python to be more
647than the product and responsibility of a single individual. It has
648found a home at CNRI <URL:http://www.cnri.reston.va.us>. Anybody who
649wishes Python well should join the PSA.
650
6512.10. Q. How do I join the PSA?
652
653A. The full scoop is available on the web, see
654<URL:http://www.python.org/psa/Joining.html>. Summary: send a check
655of at least $50 to CNRI/PSA, 1895 Preston White Drive, Suite 100, in
656Reston, VA 22091. Full-time students pay $25. Companies can join for
657a mere $500.
658
6592.11. Q. What are the benefits of joining the PSA?
660
661A. Like National Public Radio, if not enough people join, Python will
662wither. Your name will be mentioned on the PSA's web server.
663Workshops organized by the PSA <URL:http://www.python.org/workshops/>
664are only accessible to PSA members (you can join at the door). The
665PSA is working on additional benefits, such as reduced prices for
666books and software, and early access to beta versions of Python.
667
Guido van Rossumb0a2ce51995-08-28 19:41:35 +0000668
6693. Building Python and Other Known Bugs
670=======================================
Guido van Rossuma7925f11994-01-26 10:20:16 +0000671
Guido van Rossum91f60831994-02-15 15:52:27 +00006723.1. Q. Is there a test set?
Guido van Rossuma7925f11994-01-26 10:20:16 +0000673
674A. Yes, simply do "import testall" (or "import autotest" if you aren't
675interested in the output). The standard modules whose name begins
676with "test" together comprise the test. The test set doesn't test
677*all* features of Python but it goes a long way to confirm that a new
678port is actually working. The Makefile contains an entry "make test"
Guido van Rossuma6c707c1995-01-02 17:32:28 +0000679which runs the autotest module. NOTE: if "make test" fails, run the
680tests manually ("import testall") to see what goes wrong before
681reporting the error.
Guido van Rossuma7925f11994-01-26 10:20:16 +0000682
Guido van Rossum91f60831994-02-15 15:52:27 +00006833.2. Q. When running the test set, I get complaints about floating point
Guido van Rossuma7925f11994-01-26 10:20:16 +0000684operations, but when playing with floating point operations I cannot
685find anything wrong with them.
686
687A. The test set makes occasional unwarranted assumptions about the
688semantics of C floating point operations. Until someone donates a
689better floating point test set, you will have to comment out the
690offending floating point tests and execute similar tests manually.
691
Guido van Rossum7be34a81995-05-31 15:17:12 +00006923.3. Q. Link errors after rerunning the configure script.
Guido van Rossum24349991994-02-02 14:12:45 +0000693
694A. It is generally necessary to run "make clean" after a configuration
695change.
696
Guido van Rossum7be34a81995-05-31 15:17:12 +00006973.4. Q. The python interpreter complains about options passed to a
Guido van Rossum24349991994-02-02 14:12:45 +0000698script (after the script name).
699
700A. You are probably linking with GNU getopt, e.g. through -liberty.
Guido van Rossumf8c76d01994-08-17 12:19:53 +0000701Don't. The reason for the complaint is that GNU getopt, unlike System
702V getopt and other getopt implementations, doesn't consider a
703non-option to be the end of the option list. A quick (and compatible)
704fix for scripts is to add "--" to the interpreter, like this:
705
Guido van Rossuma6c707c1995-01-02 17:32:28 +0000706 #! /usr/local/bin/python --
Guido van Rossumf8c76d01994-08-17 12:19:53 +0000707
708You can also use this interactively:
709
Guido van Rossuma6c707c1995-01-02 17:32:28 +0000710 python -- script.py [options]
711
712Note that a working getopt implementation is provided in the Python
713distribution (in Python/getopt.c) but not automatically used.
Guido van Rossum24349991994-02-02 14:12:45 +0000714
Guido van Rossum7be34a81995-05-31 15:17:12 +00007153.5. Q. When building on the SGI, make tries to run python to create
Guido van Rossum24349991994-02-02 14:12:45 +0000716glmodule.c, but python hasn't been built or installed yet.
717
718A. Comment out the line mentioning glmodule.c in Setup and build a
719python without gl first; install it or make sure it is in your $PATH,
720then edit the Setup file again to turn on the gl module, and make
721again. You don't need to do "make clean"; you do need to run "make
722Makefile" in the Modules subdirectory (or just run "make" at the
723toplevel).
724
Guido van Rossum7be34a81995-05-31 15:17:12 +00007253.6. Q. Python built with gcc for the DEC Alpha doesn't work.
Guido van Rossum3de27361994-07-25 14:19:33 +0000726
Guido van Rossuma8a8d4a1995-03-10 16:19:31 +0000727People have reported problems with gcc 2.5.8 up to 2.6.3. The DEC
728OSF/1 cc compiler does not have these problems so it's likely a gcc
Guido van Rossume530c581995-04-10 12:32:16 +0000729bug. The latest news is that this has been fixed in Python 1.2 by a
730source change (I gave up waiting for a fixed gcc).
Guido van Rossum3de27361994-07-25 14:19:33 +0000731
Guido van Rossum7be34a81995-05-31 15:17:12 +00007323.7. Q. I use VPATH but some targets are built in the source directory.
Guido van Rossumb34e8aa1994-09-23 14:20:38 +0000733
734A. On some systems (e.g. Sun), if the target already exists in the
735source directory, it is created there instead of in the build
736directory. This is usually because you have previously built without
737VPATH. Try running "make clobber" in the source directory.
738
Guido van Rossum7be34a81995-05-31 15:17:12 +00007393.8. Q. Trouble building or linking with the GNU readline library.
Guido van Rossumb34e8aa1994-09-23 14:20:38 +0000740
Guido van Rossumac3f2121995-04-10 11:53:42 +0000741A. Consider using readline 2.0. Some hints:
Guido van Rossumb34e8aa1994-09-23 14:20:38 +0000742
743- You can use the GNU readline library to improve the interactive user
744interface: this gives you line editing and command history when
Guido van Rossum796b2591995-01-20 23:05:52 +0000745calling python interactively. You need to configure and build the GNU
Guido van Rossumb34e8aa1994-09-23 14:20:38 +0000746readline library before running the configure script. Its sources are
747no longer distributed with Python; you can ftp them from any GNU
Guido van Rossuma6c707c1995-01-02 17:32:28 +0000748mirror site, or from its home site
749<URL:ftp://slc2.ins.cwru.edu/pub/dist/readline-2.0.tar.gz> (or a
750higher version number -- using version 1.x is not recommended). Pass
751the Python configure script the option --with-readline=DIRECTORY where
Guido van Rossumb34e8aa1994-09-23 14:20:38 +0000752DIRECTORY is the absolute pathname of the directory where you've built
753the readline library. Some hints on building and using the readline
754library:
755
756- On SGI IRIX 5, you may have to add the following
757to rldefs.h:
758
Guido van Rossuma6c707c1995-01-02 17:32:28 +0000759 #ifndef sigmask
760 #define sigmask(sig) (1L << ((sig)-1))
761 #endif
Guido van Rossumb34e8aa1994-09-23 14:20:38 +0000762
763- On most systems, you will have to add #include "rldefs.h" to the
764top of several source files, and if you use the VPATH feature, you
765will have to add dependencies of the form foo.o: foo.c to the
766Makefile for several values of foo.
767
768- The readline library requires use of the termcap library. A
769known problem with this is that it contains entry points which
Guido van Rossum061f1821994-10-06 16:03:45 +0000770cause conflicts with the STDWIN and SGI GL libraries. The STDWIN
Guido van Rossumb34e8aa1994-09-23 14:20:38 +0000771conflict can be solved (and will be, in the next release of
Guido van Rossum061f1821994-10-06 16:03:45 +0000772STDWIN) by adding a line saying '#define werase w_erase' to the
773stdwin.h file (in the STDWIN distribution, subdirectory H). The
Guido van Rossumb34e8aa1994-09-23 14:20:38 +0000774GL conflict has been solved in the Python configure script by a
775hack that forces use of the static version of the termcap library.
776
Guido van Rossumac3f2121995-04-10 11:53:42 +0000777- Check the newsgroup gnu.bash.bug <URL:news:gnu.bash.bug> for
778specific problems with the readline library (I don't read this group
779but I've been told that it is the place for readline bugs).
Guido van Rossumb34e8aa1994-09-23 14:20:38 +0000780
Guido van Rossum7be34a81995-05-31 15:17:12 +00007813.9. Q. Trouble building Python on Linux.
Guido van Rossumb34e8aa1994-09-23 14:20:38 +0000782
Guido van Rossumac3f2121995-04-10 11:53:42 +0000783A. If you're building Python 1.2, Slackware 2.2 has a buggy bash
784(version 1.14.3) which breaks a sed script that is used to build
785Modules/Makefile. Replace /bin/sh with /bin/ash in both makesetup and
786Makefile.pre.in.
787
788In 1.1 and 1.1.1, there's a bug in the reference counting logic of
Guido van Rossuma8a8d4a1995-03-10 16:19:31 +0000789ternary pow() which is only tripped by very picky mallocs, like the
790GNU malloc on Linux. This has been fixed in 1.2. To continue the
Guido van Rossumac3f2121995-04-10 11:53:42 +0000791tests in 1.1(.1), just disable the tests of pow() with three arguments
792from Lib/test/test_b2.py.
Guido van Rossuma6c707c1995-01-02 17:32:28 +0000793
Guido van Rossumac3f2121995-04-10 11:53:42 +0000794Apart from this, Python builds and runs fine on most Linux versions
795(if you run into trouble on an old Linux version, consider upgrading).
Guido van Rossumb34e8aa1994-09-23 14:20:38 +0000796
Guido van Rossumca318ec1996-06-26 19:50:09 +00007973.10. Q. Trouble with socket I/O on Linux.
798
799A. Once you've built Python, use it to run the regen.py script in the
800Lib/linux1 directory. Apparently the files as distributed don't match
801the system headers on some Linux versions.
802
8033.11. Q. Trouble with prototypes on Ultrix.
Guido van Rossum72eb83c1994-10-07 11:33:28 +0000804
805A. Ultrix cc seems broken -- use gcc, or edit config.h to #undef
806HAVE_PROTOTYPES.
807
Guido van Rossumca318ec1996-06-26 19:50:09 +00008083.12. Q. Trouble with posix.listdir on NeXTSTEP 3.2.
Guido van Rossum9351fdb1994-11-10 23:03:51 +0000809
Guido van Rossum3fc9d731995-07-25 15:10:56 +0000810A. (This often manifests itself as a weird error from the
811compileall.py script run by "make libinstall".)
Guido van Rossum9351fdb1994-11-10 23:03:51 +0000812
Guido van Rossum3fc9d731995-07-25 15:10:56 +0000813Don't use gcc, use the Next C compiler (cc). Even though it is
814derived from (an old version of) gcc, its interpretation of the
815"-posix" switch is different; in this particular case, cc is right and
816gcc is wrong.
Guido van Rossum9351fdb1994-11-10 23:03:51 +0000817
Guido van Rossumca318ec1996-06-26 19:50:09 +00008183.13. Q. Other trouble building Python on platform X.
Guido van Rossum95f61a71994-01-26 17:23:37 +0000819
Guido van Rossum796b2591995-01-20 23:05:52 +0000820A. Please email the details to <guido@cwi.nl> and I'll look into it.
821Please provide as many details as possible. In particular, if you
822don't tell me what type of computer and what operating system (and
823version) you are using it will be difficult for me to figure out what
824is the matter. If you get a specific error message, please email it
825to me too.
Guido van Rossuma7925f11994-01-26 10:20:16 +0000826
Guido van Rossumca318ec1996-06-26 19:50:09 +00008273.14. Q. How to configure dynamic loading on Linux.
Guido van Rossum07779351995-02-07 16:59:56 +0000828
Guido van Rossum3fc9d731995-07-25 15:10:56 +0000829A. There are two answers, depending on whether you are using the new
830ELF object format or not.
Guido van Rossum07779351995-02-07 16:59:56 +0000831
Guido van Rossum3fc9d731995-07-25 15:10:56 +0000832For ELF, this seems to be the procedure (thanks to Martin von Loewis):
Guido van Rossum07779351995-02-07 16:59:56 +0000833
Guido van Rossum3fc9d731995-07-25 15:10:56 +0000834Compile Python to an ELF binary.
Guido van Rossuma8a8d4a1995-03-10 16:19:31 +0000835
Guido van Rossum3fc9d731995-07-25 15:10:56 +0000836In addition, you have to use the following flags:
Guido van Rossum07779351995-02-07 16:59:56 +0000837
Guido van Rossum3fc9d731995-07-25 15:10:56 +0000838 - when linking python: -rdynamic -ldl
839 - when compiling an object that goes into a shared module: -fPIC
840 - when linking a shared module: -shared -ldl
Guido van Rossum07779351995-02-07 16:59:56 +0000841
Guido van Rossum3fc9d731995-07-25 15:10:56 +0000842Furthermore, it appears that some Python releases did not understand
843that Linux has dynamic linking. Python 1.2 did it right, but you
844should check wether the generated config.h indicates the use of -ldl
845(i.e. dlopen, dlsym). Finally, you can load a shared module by saying
846'use foo'. Make sure the module is in your PYTHONPATH.
Guido van Rossum07779351995-02-07 16:59:56 +0000847
Guido van Rossum3fc9d731995-07-25 15:10:56 +0000848For pre-ELF systems (thanks to Andrew Kuchling):
Guido van Rossum07779351995-02-07 16:59:56 +0000849
Guido van Rossum3fc9d731995-07-25 15:10:56 +0000850Pre-ELF Linux requires that you use the GNU DLD library. The stages
851of using dynamic libraries on Linux are:
852
853 1) Get dld 3.2.5 from a Linux site. Be careful here; the most
854 recent GNU version is 3.2.3, and doesn't support Linux; be sure to
855 get it from a Linux mirror, not a GNU mirror (3.2.4 should also
856 work). Compile it and install the library libdld.a somewhere; I
857 used /usr/local/lib.
858
859 Suitable URLs for the dld distribution are currently:
860 <URL:ftp://sunsite.unc.edu/pub/Linux/libs/dld-3.2.5.src.tar.gz> and
861 <URL:ftp://tsx-11.mit.edu/pub/linux/sources/libs/dld-3.2.5.src.tar.gz>.
862 There's also a binary distribution of it:
863 <URL:ftp://sunsite.unc.edu/pub/Linux/libs/dld-3.2.5.bin.tar.gz>.
864
865 2) Get Jack Jansen's DL library; its location is given in the
866 _Extending Python_ manual as <URL:ftp://ftp.cwi.nl/pub/dynload/>.
867 Compile it and install libdl.a wherever you put libdld.a.
868
869 3) Run Python's configure script, giving it the --with-dl-dld option,
870 which requires a parameter giving the directory where you put the
871 libraries.
872
873 4) Recompile Python.
874
Guido van Rossumca318ec1996-06-26 19:50:09 +00008753.15. Q. Under Solaris 2.x, using GCC, how do I use shared libraries?
Guido van Rossum3fc9d731995-07-25 15:10:56 +0000876
877A. Use the linker in /usr/ucb/ld, not the GNU linker. The latter
878cannot create shared libraries.
879
Guido van Rossumca318ec1996-06-26 19:50:09 +00008803.16. Q. Errors when linking with a shared library containing C++ code.
Guido van Rossum3fc9d731995-07-25 15:10:56 +0000881
882A. Link the main Python binary with C++. Change the definition of
883LINKCC in Modules/Makefile to be your C++ compiler. You may have to
884edit config.c slightly to make it compilable with C++.
Guido van Rossum07779351995-02-07 16:59:56 +0000885
Guido van Rossumca318ec1996-06-26 19:50:09 +00008863.17. Q. Tk menus or radiobuttons don't work properly in Python 1.2.
Guido van Rossumb0a2ce51995-08-28 19:41:35 +0000887
888A. There's a bug in Tkinter.py; remove ClassType and InstanceType from
889the definition of CallableTypes near the top of Lib/tkinter/Tkinter.py.
890
Guido van Rossumca318ec1996-06-26 19:50:09 +00008913.18. Q. I built with tkintermodule.c enabled but get "Tkinter not found".
Guido van Rossumb0a2ce51995-08-28 19:41:35 +0000892
893A. Tkinter.py (note: upper case T) lives in a subdirectory of Lib,
894Lib/tkinter. If you are using the default module search path, you
895probably didn't enable the line in the Modules/Setup file defining
896TKPATH; if you use the environment variable PYTHONPATH, you'll have to
897add the proper tkinter subdirectory.
898
Guido van Rossumca318ec1996-06-26 19:50:09 +00008993.19. Q. I built with Tk 4.0 but Tkinter complains about the Tk version.
Guido van Rossumb0a2ce51995-08-28 19:41:35 +0000900
901A. Several things could cause this. You most likely have a Tk 3.6
902installation that wasn't completely eradicated by the Tk 4.0
903installation (which tends to add "4.0" to its installed files). You
904may have the Tk 3.6 support library installed in the place where the
905Tk 4.0 support files should be (default /usr/local/lib/tk/); you may
906have compiled Python with the old tk.h header file (yes, this actually
907compiles!); you may actually have linked with Tk 3.6 even though Tk
9084.0 is also around. Similar for Tcl 7.4 vs. Tcl 7.3.
909
Guido van Rossumca318ec1996-06-26 19:50:09 +00009103.20. Q. Tk doesn't work right on DEC Alpha.
Guido van Rossumb0a2ce51995-08-28 19:41:35 +0000911
912A. You probably compiled either Tcl, Tk or Python with gcc. Don't.
913For this platform, which has 64-bit integers, gcc is known to generate
914broken code. The standard cc (which comes bundled with the OS!)
915works. If you still prefer gcc, at least try recompiling with cc
916before reporting problems to the newsgroup or the author; if this
917fixes the problem, report the bug to the gcc developers instead. (As
918far as we know, there are no problem with gcc on other platforms --
919the instabilities seem to be restricted to the DEC Alpha.) See also
920question 3.6.
921
Guido van Rossumca318ec1996-06-26 19:50:09 +00009223.21. Q. Several common system calls are missing from the posix module.
923
924A. Most likely, *all* test compilations run by the configure script
925are failing for some reason or another. Have a look in config.log to
926see what could be the reason. A common reason is specifying a
927directory to the --with-readline option that doesn't contain the
928libreadline.a file.
929
9303.22. Q. ImportError: No module named string, on MS Windows.
931
932A. Most likely, your PYTHONPATH environment variable should be set to
933something like:
934
935set PYTHONPATH=c:\python;c:\python\lib;c:\python\scripts
936
937(assuming Python was installed in c:\python)
938
9393.23. Q. Core dump on SGI when using the gl module.
940
941There are conflicts between entry points in the termcap and curses
942libraries and an entry point in the GL library. There's a hack of a
943fix for the termcap library if it's needed for the GNU readline
944library, but it doesn't work when you're using curses. Concluding,
945you can't build a Python binary containing both the curses and gl
946modules.
947
948
Guido van Rossuma7925f11994-01-26 10:20:16 +0000949
9504. Programming in Python
951========================
952
Guido van Rossum24349991994-02-02 14:12:45 +00009534.1. Q. Is there a source code level debugger with breakpoints, step,
954etc.?
955
956A. Yes. Check out module pdb; pdb.help() prints the documentation (or
957you can read it as Lib/pdb.doc). If you use the STDWIN option,
958there's also a windowing interface, wdb. You can write your own
959debugger by using the code for pdb or wdb as an example.
960
9614.2. Q. Can I create an object class with some methods implemented in
Guido van Rossuma7925f11994-01-26 10:20:16 +0000962C and others in Python (e.g. through inheritance)? (Also phrased as:
963Can I use a built-in type as base class?)
964
965A. No, but you can easily create a Python class which serves as a
966wrapper around a built-in object, e.g. (for dictionaries):
967
Guido van Rossuma6c707c1995-01-02 17:32:28 +0000968 # A user-defined class behaving almost identical
969 # to a built-in dictionary.
970 class UserDict:
971 def __init__(self): self.data = {}
972 def __repr__(self): return repr(self.data)
973 def __cmp__(self, dict):
974 if type(dict) == type(self.data):
975 return cmp(self.data, dict)
976 else:
977 return cmp(self.data, dict.data)
978 def __len__(self): return len(self.data)
979 def __getitem__(self, key): return self.data[key]
980 def __setitem__(self, key, item): self.data[key] = item
981 def __delitem__(self, key): del self.data[key]
982 def keys(self): return self.data.keys()
983 def items(self): return self.data.items()
984 def values(self): return self.data.values()
985 def has_key(self, key): return self.data.has_key(key)
Guido van Rossuma7925f11994-01-26 10:20:16 +0000986
Guido van Rossum24349991994-02-02 14:12:45 +00009874.3. Q. Is there a curses/termcap package for Python?
Guido van Rossuma7925f11994-01-26 10:20:16 +0000988
Guido van Rossuma6c707c1995-01-02 17:32:28 +0000989A. Yes -- Lance Ellinghaus has written a module that interfaces to
Guido van Rossumb34e8aa1994-09-23 14:20:38 +0000990System V's "ncurses". If you know a little curses and some Python,
Guido van Rossuma6c707c1995-01-02 17:32:28 +0000991it's straightforward to use. It is part of the standard Python
992distribution, but not configured by default -- you must enable it by
993editing Modules/Setup. It requires a System V curses implementation.
Guido van Rossumb34e8aa1994-09-23 14:20:38 +0000994
995You could also consider using the "alfa" (== character cell) version
Guido van Rossuma6c707c1995-01-02 17:32:28 +0000996of STDWIN. (Standard Window System Interface, a portable windowing
997system interface by myself <URL:ftp://ftp.cwi.nl/pub/stdwin/>.) This
Guido van Rossumb34e8aa1994-09-23 14:20:38 +0000998will also prepare your program for porting to windowing environments
999such as X11 or the Macintosh.
Guido van Rossuma7925f11994-01-26 10:20:16 +00001000
Guido van Rossum24349991994-02-02 14:12:45 +000010014.4. Q. Is there an equivalent to C's onexit() in Python?
Guido van Rossuma7925f11994-01-26 10:20:16 +00001002
1003A. Yes, if you import sys and assign a function to sys.exitfunc, it
1004will be called when your program exits, is killed by an unhandled
1005exception, or (on UNIX) receives a SIGHUP or SIGTERM signal.
1006
Guido van Rossum24349991994-02-02 14:12:45 +000010074.5. Q. When I define a function nested inside another function, the
Guido van Rossuma7925f11994-01-26 10:20:16 +00001008nested function seemingly can't access the local variables of the
1009outer function. What is going on? How do I pass local data to a
1010nested function?
1011
1012A. Python does not have arbitrarily nested scopes. When you need to
1013create a function that needs to access some data which you have
1014available locally, create a new class to hold the data and return a
1015method of an instance of that class, e.g.:
1016
Guido van Rossuma6c707c1995-01-02 17:32:28 +00001017 class MultiplierClass:
1018 def __init__(self, factor):
1019 self.factor = factor
1020 def multiplier(self, argument):
1021 return argument * self.factor
Guido van Rossuma7925f11994-01-26 10:20:16 +00001022
Guido van Rossuma6c707c1995-01-02 17:32:28 +00001023 def generate_multiplier(factor):
1024 return MultiplierClass(factor).multiplier
Guido van Rossuma7925f11994-01-26 10:20:16 +00001025
Guido van Rossuma6c707c1995-01-02 17:32:28 +00001026 twice = generate_multiplier(2)
1027 print twice(10)
1028 # Output: 20
1029
1030An alternative solution uses default arguments, e.g.:
1031
1032 def generate_multiplier(factor):
1033 def multiplier(arg, fact = factor):
1034 return arg*fact
1035 return multiplier
1036
1037 twice = generate_multiplier(2)
1038 print twice(10)
1039 # Output: 20
Guido van Rossuma7925f11994-01-26 10:20:16 +00001040
Guido van Rossum24349991994-02-02 14:12:45 +000010414.6. Q. How do I iterate over a sequence in reverse order?
Guido van Rossuma7925f11994-01-26 10:20:16 +00001042
1043A. If it is a list, the fastest solution is
1044
Guido van Rossuma6c707c1995-01-02 17:32:28 +00001045 list.reverse()
1046 try:
1047 for x in list:
1048 "do something with x"
1049 finally:
1050 list.reverse()
Guido van Rossuma7925f11994-01-26 10:20:16 +00001051
1052This has the disadvantage that while you are in the loop, the list
1053is temporarily reversed. If you don't like this, you can make a copy.
1054This appears expensive but is actually faster than other solutions:
1055
Guido van Rossuma6c707c1995-01-02 17:32:28 +00001056 rev = list[:]
1057 rev.reverse()
1058 for x in rev:
1059 <do something with x>
Guido van Rossuma7925f11994-01-26 10:20:16 +00001060
1061If it isn't a list, a more general but slower solution is:
1062
Guido van Rossuma6c707c1995-01-02 17:32:28 +00001063 i = len(list)
1064 while i > 0:
1065 i = i-1
1066 x = list[i]
1067 <do something with x>
Guido van Rossuma7925f11994-01-26 10:20:16 +00001068
1069A more elegant solution, is to define a class which acts as a sequence
1070and yields the elements in reverse order (solution due to Steve
1071Majewski):
1072
Guido van Rossuma6c707c1995-01-02 17:32:28 +00001073 class Rev:
1074 def __init__(self, seq):
1075 self.forw = seq
1076 def __len__(self):
1077 return len(self.forw)
1078 def __getitem__(self, i):
1079 return self.forw[-(i + 1)]
Guido van Rossuma7925f11994-01-26 10:20:16 +00001080
1081You can now simply write:
1082
Guido van Rossuma6c707c1995-01-02 17:32:28 +00001083 for x in Rev(list):
1084 <do something with x>
Guido van Rossuma7925f11994-01-26 10:20:16 +00001085
Guido van Rossum061f1821994-10-06 16:03:45 +00001086Unfortunately, this solution is slowest of all, due to the method
Guido van Rossuma7925f11994-01-26 10:20:16 +00001087call overhead...
1088
Guido van Rossum24349991994-02-02 14:12:45 +000010894.7. Q. My program is too slow. How do I speed it up?
Guido van Rossuma7925f11994-01-26 10:20:16 +00001090
1091A. That's a tough one, in general. There are many tricks to speed up
1092Python code; I would consider rewriting parts in C only as a last
1093resort. One thing to notice is that function and (especially) method
1094calls are rather expensive; if you have designed a purely OO interface
1095with lots of tiny functions that don't do much more than get or set an
1096instance variable or call another method, you may consider using a
1097more direct way, e.g. directly accessing instance variables. Also see
1098the standard module "profile" (described in the file
1099"python/lib/profile.doc") which makes it possible to find out where
1100your program is spending most of its time (if you have some patience
1101-- the profiling itself can slow your program down by an order of
1102magnitude).
1103
Guido van Rossum24349991994-02-02 14:12:45 +000011044.8. Q. When I have imported a module, then edit it, and import it
Guido van Rossuma7925f11994-01-26 10:20:16 +00001105again (into the same Python process), the changes don't seem to take
1106place. What is going on?
1107
Guido van Rossuma6c707c1995-01-02 17:32:28 +00001108A. For reasons of efficiency as well as consistency, Python only reads
Guido van Rossum796b2591995-01-20 23:05:52 +00001109the module file on the first time a module is imported. (Otherwise a
Guido van Rossuma6c707c1995-01-02 17:32:28 +00001110program consisting of many modules, each of which imports the same
Guido van Rossum796b2591995-01-20 23:05:52 +00001111basic module, would read the basic module over and over again.) To
1112force rereading of a changed module, do this:
Guido van Rossuma7925f11994-01-26 10:20:16 +00001113
Guido van Rossuma6c707c1995-01-02 17:32:28 +00001114 import modname
1115 reload(modname)
Guido van Rossuma7925f11994-01-26 10:20:16 +00001116
1117Warning: this technique is not 100% fool-proof. In particular,
1118modules containing statements like
1119
Guido van Rossuma6c707c1995-01-02 17:32:28 +00001120 from modname import some_objects
Guido van Rossuma7925f11994-01-26 10:20:16 +00001121
Guido van Rossumb34e8aa1994-09-23 14:20:38 +00001122will continue to work with the old version of the imported objects.
Guido van Rossuma7925f11994-01-26 10:20:16 +00001123
Guido van Rossumb34e8aa1994-09-23 14:20:38 +000011244.9. Q. How do I find the current module name?
Guido van Rossum24349991994-02-02 14:12:45 +00001125
Guido van Rossum061f1821994-10-06 16:03:45 +00001126A. A module can find out its own module name by looking at the
Guido van Rossum24349991994-02-02 14:12:45 +00001127(predefined) global variable __name__. If this has the value
Guido van Rossumb34e8aa1994-09-23 14:20:38 +00001128'__main__' you are running as a script.
1129
Guido van Rossuma6c707c1995-01-02 17:32:28 +000011304.10. Q. I have a module in which I want to execute some extra code
1131when it is run as a script. How do I find out whether I am running as
1132a script?
Guido van Rossumb34e8aa1994-09-23 14:20:38 +00001133
1134A. See the previous question. E.g. if you put the following on the
1135last line of your module, main() is called only when your module is
1136running as a script:
Guido van Rossum24349991994-02-02 14:12:45 +00001137
Guido van Rossuma6c707c1995-01-02 17:32:28 +00001138 if __name__ == '__main__': main()
Guido van Rossum24349991994-02-02 14:12:45 +00001139
Guido van Rossuma6c707c1995-01-02 17:32:28 +000011404.11. Q. I try to run a program from the Demo directory but it fails
1141with ImportError: No module named ...; what gives?
Guido van Rossum7ce61c11994-06-13 15:13:56 +00001142
Guido van Rossum061f1821994-10-06 16:03:45 +00001143A. This is probably an optional module (written in C!) which hasn't
1144been configured on your system. This especially happens with modules
Guido van Rossuma6c707c1995-01-02 17:32:28 +00001145like "Tkinter", "stdwin", "gl", "Xt" or "Xm". For Tkinter, STDWIN and
1146many other modules, see Modules/Setup.in for info on how to add these
1147modules to your Python, if it is possible at all. Sometimes you will
1148have to ftp and build another package first (e.g. STDWIN). Sometimes
1149the module only works on specific platforms (e.g. gl only works on SGI
1150machines).
1151
1152NOTE: if the complaint is about "Tkinter" (upper case T) and you have
Guido van Rossumca318ec1996-06-26 19:50:09 +00001153already configured module "tkinter" (lower case t), the solution is
1154*not* to rename tkinter to Tkinter or vice versa. There is probably
1155something wrong with your module search path. Check out the value of
1156sys.path.
Guido van Rossum7ce61c11994-06-13 15:13:56 +00001157
Guido van Rossum061f1821994-10-06 16:03:45 +00001158For X-related modules (Xt and Xm) you will have to do more work: they
1159are currently not part of the standard Python distribution. You will
Guido van Rossuma6c707c1995-01-02 17:32:28 +00001160have to ftp the Extensions tar file, e.g.
Guido van Rossum7be34a81995-05-31 15:17:12 +00001161<URL:ftp://ftp.python.org/pub/python/src/extensions.tar.gz> and follow
1162the instructions there.
Guido van Rossum061f1821994-10-06 16:03:45 +00001163
1164See also the next question.
1165
11664.12. Q. I have successfully built Python with STDWIN but it can't
1167find some modules (e.g. stdwinevents).
Guido van Rossumb34e8aa1994-09-23 14:20:38 +00001168
1169A. There's a subdirectory of the library directory named 'stdwin'
1170which should be in the default module search path. There's a line in
1171Modules/Setup(.in) that you have to enable for this purpose --
Guido van Rossum061f1821994-10-06 16:03:45 +00001172unfortunately in the latest release it's not near the other
Guido van Rossumb34e8aa1994-09-23 14:20:38 +00001173STDWIN-related lines so it's easy to miss it.
1174
11754.13. Q. What GUI toolkits exist for Python?
Guido van Rossum7ce61c11994-06-13 15:13:56 +00001176
1177A. Depending on what platform(s) you are aiming at, there are several.
1178
Guido van Rossumb34e8aa1994-09-23 14:20:38 +00001179- There's a neat object-oriented interface to the Tcl/Tk widget set,
Guido van Rossuma6c707c1995-01-02 17:32:28 +00001180called Tkinter. As of python 1.1, it is part of the standard Python
1181distribution -- all you need to do is enable it in Modules/Setup
1182(provided you have already installed Tk and Tcl). This is probably
1183the easiest to install and use, and the most complete widget set. It
1184is also very likely that in the future the standard Python GUI API
1185will be based on or at least look very much like the Tkinter
1186interface. For more info about Tk, including pointers to the source,
Guido van Rossumbf8e7d51995-08-28 03:09:13 +00001187see the Tcl/Tk home page <URL:http://www.sunlabs.com/research/tcl/>.
Guido van Rossumb34e8aa1994-09-23 14:20:38 +00001188
Guido van Rossum7ce61c11994-06-13 15:13:56 +00001189- The standard Python distribution comes with an interface to STDWIN,
Guido van Rossuma6c707c1995-01-02 17:32:28 +00001190a platform-independent low-level windowing interface. You have to ftp
1191the source for STDWIN separately,
1192e.g. <URL:ftp://ftp.cwi.nl/pub/stdwin/> or gatekeeper.dec.com in
1193pub/misc/stdwin <URL:ftp://gatekeeper.dec.com/pub/misc/stdwin/>.
1194STDWIN runs under X11 or the Mac; a Windows port has been attempted
1195but I can't seem to get it working. Note that STDWIN is really not
1196powerful enough to implement a modern GUI (no widgets, etc.) and that
1197I don't have the time to maintain or extend it, so you may be better
1198off using Tkinter or the Motif interface, unless you require
1199portability to the Mac (which is also offered by SUIT, by the way --
1200see below).
Guido van Rossum7ce61c11994-06-13 15:13:56 +00001201
Guido van Rossumb34e8aa1994-09-23 14:20:38 +00001202- For SGI IRIX only, there's an interface to the complete GL (Graphics
Guido van Rossum7ce61c11994-06-13 15:13:56 +00001203Library -- low level but very good 3D capabilities) as well as to
1204FORMS (a buttons-and-sliders-etc package built on top of GL by Mark
Guido van Rossuma6c707c1995-01-02 17:32:28 +00001205Overmars -- ftp'able from <URL:ftp://ftp.cs.ruu.nl/pub/SGI/FORMS/>).
Guido van Rossum7ce61c11994-06-13 15:13:56 +00001206
1207- There's an interface to X11, including the Athena and Motif widget
1208sets (and a few individual widgets, like Mosaic's HTML widget and
1209SGI's GL widget) in the Extensions set, which is separately ftp'able
Guido van Rossum7be34a81995-05-31 15:17:12 +00001210<URL:ftp://ftp.python.org/pub/python/src/extensions.tar.gz>.
Guido van Rossum7ce61c11994-06-13 15:13:56 +00001211
1212- There's an interface to SUIT, the U of Virginia's Simple User
Guido van Rossuma6c707c1995-01-02 17:32:28 +00001213Interface Toolkit; it can be ftp'ed from
1214<URL:ftp://uvacs.cs.virginia.edu/pub/suit/python/SUIT_python.tar.Z>.
1215A PC binary of Python 1.0.2 compiled with DJGPP and with SUIT support
1216built-in has been made available by Antonio Costa
1217<URL:ftp://asterix.inescn.pt/pub/PC/python/pyt102su.exe> (a
1218self-extracting archive). Note that the UVa people themselves have
1219expressed doubts about SUIT, and are planning to build a Python GUI
1220API based upon Tk (though not necessarily on Tkinter); see
1221<URL:http://server.cs.virginia.edu/~tnb2d/IT/IT.html>.
Guido van Rossum7ce61c11994-06-13 15:13:56 +00001222
Guido van Rossum7ce61c11994-06-13 15:13:56 +00001223- There's an interface to WAFE, a Tcl interface to the X11 Motif and
Guido van Rossuma6c707c1995-01-02 17:32:28 +00001224Athena widget sets. Last I heard about it it was included in the WAFE
12251.0 prerelease
1226<URL:ftp://ftp.wu-wien.ac.at/pub/src/X11/wafe/wafe-1.0.tar.gz-prerelease>.
Guido van Rossum7ce61c11994-06-13 15:13:56 +00001227
Guido van Rossumbf8e7d51995-08-28 03:09:13 +00001228- The NT port by Mark Hammond (see question 7.4) includes an interface
1229to the Microsoft Foundation Classes and a Python programming
1230environment using it that's written mostly in Python. See
1231<URL:ftp://ftp.python.org/pub/python/nt/>.
1232
Guido van Rossuma8a8d4a1995-03-10 16:19:31 +00001233- There's an interface to wxWindows. wxWindows is a portable GUI
1234class library written in C++. It supports XView, Motif, MS-Windows as
1235targets. There is some support for Macs and CURSES as well. wxWindows
1236preserves the look and feel of the underlying graphics toolkit. See
1237the wxPython WWW page at
1238<URL:http://www.aiai.ed.ac.uk/~jacs/wx/wxpython/wxpython.html>.
1239
Guido van Rossum3fc9d731995-07-25 15:10:56 +00001240- There's an object-oriented GUI based on the Microsoft Foundation
1241Classes model called WPY. Programs written in WPY run unchanged and
1242with native look and feel on NT, Windows 3.1 (using win32s) and on
1243Unix (using Tk). Source and binaries for NT and Linux are available
1244in <URL:ftp://ftp.python.org/pub/python/wpy>.
1245
Guido van Rossuma8a8d4a1995-03-10 16:19:31 +00001246- Python has been mentioned on the "Futurism" subpage of the Fresco
1247home page <URL:http://www.faslab.com/fresco/HomePage.html>. "Pesto"
1248is a Python interface to the CORBA dynamic invocation interface, and
1249thus Fresco. A Pesto prototype is running and is currently being
Guido van Rossum7be34a81995-05-31 15:17:12 +00001250packaged up for inclusion in the Fresco snapshot. See also the Pesto
1251web pages: <URL:http://www.faslab.com/fresco/pesto/Index.html>.
Guido van Rossuma8a8d4a1995-03-10 16:19:31 +00001252
Guido van Rossum061f1821994-10-06 16:03:45 +000012534.14. Q. Are there any interfaces to database packages in Python?
Guido van Rossum7ce61c11994-06-13 15:13:56 +00001254
1255A. There's an interface to SYBASE by John Redford
1256<jredford@lehman.com>.
1257
Guido van Rossum796b2591995-01-20 23:05:52 +00001258There's an interface to metalbase by Lance Ellinghaus
Guido van Rossuma6c707c1995-01-02 17:32:28 +00001259<lance@markv.com>; it is part of the separate Extensions distribution
Guido van Rossum7be34a81995-05-31 15:17:12 +00001260<URL:ftp://ftp.python.org/pub/python/src/extensions.tar.gz>.
Guido van Rossum7ce61c11994-06-13 15:13:56 +00001261
Guido van Rossumb34e8aa1994-09-23 14:20:38 +00001262Anthony Baxter <anthony.baxter@aaii.oz.au> has written an interface to
Guido van Rossume530c581995-04-10 12:32:16 +00001263mSQL (mini-SQL).
Guido van Rossum7be34a81995-05-31 15:17:12 +00001264<URL:ftp://ftp.python.org/pub/python/contrib/PymSQL.tar.gz>.
Guido van Rossumb34e8aa1994-09-23 14:20:38 +00001265
Guido van Rossum7be34a81995-05-31 15:17:12 +00001266Tom Culliton <culliton@clark.net> has written an Oracle module.
1267See <URL:ftp://ftp.clark.net/pub/culliton/oramod.tgz>.
Guido van Rossum796b2591995-01-20 23:05:52 +00001268
Guido van Rossumb34e8aa1994-09-23 14:20:38 +000012694.15. Q. Is it possible to write obfuscated one-liners in Python?
Guido van Rossumc24da7c1994-09-23 14:08:41 +00001270
1271A. Yes. See the following three examples, due to Ulf Bartelt:
1272
Guido van Rossuma6c707c1995-01-02 17:32:28 +00001273 # Primes < 1000
1274 print filter(None,map(lambda y:y*reduce(lambda x,y:x*y!=0,
1275 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 +00001276
Guido van Rossuma6c707c1995-01-02 17:32:28 +00001277 # First 10 Fibonacci numbers
1278 print map(lambda x,f=lambda x,f:(x<=1) or (f(x-1,f)+f(x-2,f)): f(x,f),
1279 range(10))
Guido van Rossumc24da7c1994-09-23 14:08:41 +00001280
Guido van Rossuma6c707c1995-01-02 17:32:28 +00001281 # Mandelbrot set
1282 print (lambda Ru,Ro,Iu,Io,IM,Sx,Sy:reduce(lambda x,y:x+y,map(lambda y,
1283 Iu=Iu,Io=Io,Ru=Ru,Ro=Ro,Sy=Sy,L=lambda yc,Iu=Iu,Io=Io,Ru=Ru,Ro=Ro,i=IM,
1284 Sx=Sx,Sy=Sy:reduce(lambda x,y:x+y,map(lambda x,xc=Ru,yc=yc,Ru=Ru,Ro=Ro,
1285 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
1286 >=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(
1287 64+F(Ru+x*(Ro-Ru)/Sx,yc,0,0,i)),range(Sx))):L(Iu+y*(Io-Iu)/Sy),range(Sy
1288 ))))(-2.1, 0.7, -1.2, 1.2, 30, 80, 24)
1289 # \___ ___/ \___ ___/ | | |__ lines on screen
1290 # V V | |______ columns on screen
1291 # | | |__________ maximum of "iterations"
1292 # | |_________________ range on y axis
1293 # |____________________________ range on x axis
Guido van Rossumc24da7c1994-09-23 14:08:41 +00001294
1295Don't try this at home, kids!
1296
Guido van Rossumb34e8aa1994-09-23 14:20:38 +000012974.16. Q. Is there an equivalent of C's "?:" ternary operator?
Guido van Rossumc24da7c1994-09-23 14:08:41 +00001298
Guido van Rossumb34e8aa1994-09-23 14:20:38 +00001299A. Not directly. In many cases you can mimic a?b:c with "a and b or
1300c", but there's a flaw: if b is zero (or empty, or None -- anything
1301that tests false) then c will be selected instead. In many cases you
1302can prove by looking at the code that this can't happen (e.g. because
1303b is a constant or has a type that can never be false), but in general
1304this can be a problem.
1305
1306Steve Majewski (or was it Tim Peters?) suggested the following
1307solution: (a and [b] or [c])[0]. Because [b] is a singleton list it
1308is never false, so the wrong path is never taken; then applying [0] to
1309the whole thing gets the b or c that you really wanted. Ugly, but it
1310gets you there in the rare cases where it is really inconvenient to
1311rewrite your code using 'if'.
1312
13134.17. Q. My class defines __del__ but it is not called when I delete the
1314object.
1315
1316A. There are several possible reasons for this.
1317
1318- The del statement does not necessarily call __del__ -- it simply
1319decrements the object's reference count, and if this reaches zero
1320__del__ is called.
1321
1322- If your data structures contain circular links (e.g. a tree where
1323each child has a parent pointer and each parent has a list of
1324children) the reference counts will never go back to zero. You'll
Guido van Rossum061f1821994-10-06 16:03:45 +00001325have to define an explicit close() method which removes those
Guido van Rossumb34e8aa1994-09-23 14:20:38 +00001326pointers. Please don't ever call __del__ directly -- __del__ should
Guido van Rossum061f1821994-10-06 16:03:45 +00001327call close() and close() should make sure that it can be called more
Guido van Rossumb34e8aa1994-09-23 14:20:38 +00001328than once for the same object.
1329
1330- If the object has ever been a local variable (or argument, which is
1331really the same thing) to a function that caught an expression in an
1332except clause, chances are that a reference to the object still exists
1333in that function's stack frame as contained in the stack trace.
1334Normally, deleting (better: assigning None to) sys.exc_traceback will
1335take care of this. If you a stack was printed for an unhandled
1336exception in an interactive interpreter, delete sys.last_traceback
1337instead.
1338
1339- There is code that deletes all objects when the interpreter exits,
1340but if your Python has been configured to support threads, it is not
1341called (because other threads may still be active). You can define
Guido van Rossum061f1821994-10-06 16:03:45 +00001342your own cleanup function using sys.exitfunc (see question 4.4).
Guido van Rossumb34e8aa1994-09-23 14:20:38 +00001343
Guido van Rossuma6c707c1995-01-02 17:32:28 +00001344- Finally, there are some obscure bugs if your __del__ method does
1345complicated things such as updating dictionaries or lists or
1346references globals. I hope to have fixed these in release 1.2.
1347
13484.18. Q. How do I change the shell environment for programs called
1349using os.popen() or os.system()? Changing os.environ doesn't work.
Guido van Rossumb34e8aa1994-09-23 14:20:38 +00001350
1351A. Modifying the environment passed to subshells was left out of the
1352interpreter because there seemed to be no well-established portable
Guido van Rossuma6c707c1995-01-02 17:32:28 +00001353way to do it (in particular, some systems, have putenv(), others have
1354setenv(), and some have none at all).
Guido van Rossumb34e8aa1994-09-23 14:20:38 +00001355
1356However if all you want is to pass environment variables to the
1357commands run by os.system() or os.popen(), there's a simple solution:
1358prefix the command string with a couple of variable assignments and
Guido van Rossum796b2591995-01-20 23:05:52 +00001359export statements. The following would be universal for popen:
Guido van Rossumb34e8aa1994-09-23 14:20:38 +00001360
Guido van Rossuma6c707c1995-01-02 17:32:28 +00001361 import os
1362 from commands import mkarg # nifty routine to add shell quoting
1363 def epopen(cmd, mode, env = {}):
1364 # env is a dictionary of environment variables
1365 prefix = ''
Guido van Rossum796b2591995-01-20 23:05:52 +00001366 for key, value in env.items():
1367 prefix = prefix + '%s=%s\n' % (key, mkarg(value)[1:])
Guido van Rossuma6c707c1995-01-02 17:32:28 +00001368 prefix = prefix + 'export %s\n' % key
1369 return os.popen(prefix + cmd, mode)
Guido van Rossumb34e8aa1994-09-23 14:20:38 +00001370
13714.19. Q. What is a class?
1372
1373A. A class is the particular object type that is created by executing
Guido van Rossum796b2591995-01-20 23:05:52 +00001374a class statement. Class objects are used as templates, to create
1375class instance objects, which embody both the data structure and
1376program routines specific to a datatype.
Guido van Rossumb34e8aa1994-09-23 14:20:38 +00001377
13784.20. Q. What is a method?
1379
1380A. A method is a function that you normally call as
Guido van Rossum796b2591995-01-20 23:05:52 +00001381x.name(arguments...) for some object x. The term is used for methods
Guido van Rossumb34e8aa1994-09-23 14:20:38 +00001382of classes and class instances as well as for methods of built-in
Guido van Rossum796b2591995-01-20 23:05:52 +00001383objects. (The latter have a completely different implementation and
1384only share the way their calls look in Python code.) Methods of
1385classes (and class instances) are defined as functions inside the
1386class definition.
Guido van Rossumb34e8aa1994-09-23 14:20:38 +00001387
13884.21. Q. What is self?
1389
1390A. Self is merely a conventional name for the first argument of a
1391method -- i.e. a function defined inside a class definition. A method
1392defined as meth(self, a, b, c) should be called as x.meth(a, b, c) for
1393some instance x of the class in which the definition occurs;
1394the called method will think it is called as meth(x, a, b, c).
1395
13964.22. Q. What is a unbound method?
1397
1398A. An unbound method is a method defined in a class that is not yet
1399bound to an instance. You get an unbound method if you ask for a
1400class attribute that happens to be a function. You get a bound method
1401if you ask for an instance attribute. A bound method knows which
Guido van Rossum061f1821994-10-06 16:03:45 +00001402instance it belongs to and calling it supplies the instance automatically;
Guido van Rossumb34e8aa1994-09-23 14:20:38 +00001403an unbound method only knows which class it wants for its first
1404argument (a derived class is also OK). Calling an unbound method
1405doesn't "magically" derive the first argument from the context -- you
1406have to provide it explicitly.
1407
Guido van Rossuma6c707c1995-01-02 17:32:28 +000014084.23. Q. How do I call a method defined in a base class from a derived
1409class that overrides it?
Guido van Rossumb34e8aa1994-09-23 14:20:38 +00001410
1411A. If your class definition starts with "class Derived(Base): ..."
1412then you can call method meth defined in Base (or one of Base's base
1413classes) as Base.meth(self, arguments...). Here, Base.meth is an
1414unbound method (see previous question).
1415
Guido van Rossuma6c707c1995-01-02 17:32:28 +000014164.24. Q. How do I call a method from a base class without using the
1417name of the base class?
Guido van Rossumb34e8aa1994-09-23 14:20:38 +00001418
1419A. DON'T DO THIS. REALLY. I MEAN IT. It appears that you could call
1420self.__class__.__bases__[0].meth(self, arguments...) but this fails when
Guido van Rossum061f1821994-10-06 16:03:45 +00001421a doubly-derived method is derived from your class: for its instances,
Guido van Rossumb34e8aa1994-09-23 14:20:38 +00001422self.__class__.__bases__[0] is your class, not its base class -- so
1423(assuming you are doing this from within Derived.meth) you would start
1424a recursive call.
1425
14264.25. Q. How can I organize my code to make it easier to change the base
1427class?
1428
1429A. You could define an alias for the base class, assign the real base
1430class to it before your class definition, and use the alias throughout
1431your class. Then all you have to change is the value assigned to the
1432alias. Incidentally, this trick is also handy if you want to decide
1433dynamically (e.g. depending on availability of resources) which base
1434class to use. Example:
1435
1436BaseAlias = <real base class>
1437class Derived(BaseAlias):
Guido van Rossuma6c707c1995-01-02 17:32:28 +00001438 def meth(self):
1439 BaseAlias.meth(self)
1440 ...
Guido van Rossumb34e8aa1994-09-23 14:20:38 +00001441
14424.26. Q. How can I find the methods or attributes of an object?
1443
1444A. This depends on the object type.
1445
1446For an instance x of a user-defined class, instance attributes are
1447found in the dictionary x.__dict__, and methods and attributes defined
1448by its class are found in x.__class__.__bases__[i].__dict__ (for i in
1449range(len(x.__class__.__bases__))). You'll have to walk the tree of
1450base classes to find *all* class methods and attributes.
1451
1452Many, but not all built-in types define a list of their method names
1453in x.__methods__, and if they have data attributes, their names may be
1454found in x.__members__. However this is only a convention.
1455
1456For more information, read the source of the standard (but
1457undocumented) module newdir.
1458
14594.27. Q. I can't seem to use os.read() on a pipe created with os.popen().
1460
1461A. os.read() is a low-level function which takes a file descriptor (a
1462small integer). os.popen() creates a high-level file object -- the
1463same type used for sys.std{in,out,err} and returned by the builtin
1464open() function. Thus, to read n bytes from a pipe p created with
1465os.popen(), you need to use p.read(n).
Guido van Rossuma7925f11994-01-26 10:20:16 +00001466
Guido van Rossum061f1821994-10-06 16:03:45 +000014674.28. Q. How can I create a stand-alone binary from a Python script?
1468
1469The demo script "Demo/scripts/freeze.py" does what you want. (It's
1470actually not a demo but a support tool -- there is some extra code in
1471the interpreter to accommodate it.) It requires that you have the
1472Python build tree handy, complete with all the lib*.a files.
1473
1474This works by scanning your source recursively for import statements
1475(both forms) and looking for the modules on the standard Python path
1476as well as in the source directory (for built-in modules). It then
1477"compiles" the modules written in Python to C code (array initializers
1478that can be turned into code objects using the marshal module) and
1479creates a custom-made config file that only contains those built-in
1480modules which are actually used in the program. It then compiles the
1481generated C code and links it with the rest of the Python interpreter
1482to form a self-contained binary which acts exactly like your script.
1483
Guido van Rossum7be34a81995-05-31 15:17:12 +00001484Hint: the freeze program only works if your script's filename ends in
1485".py".
Guido van Rossum061f1821994-10-06 16:03:45 +00001486
Guido van Rossum7be34a81995-05-31 15:17:12 +000014874.29. Q. What WWW tools are there for Python?
Guido van Rossum061f1821994-10-06 16:03:45 +00001488
Guido van Rossum7be34a81995-05-31 15:17:12 +00001489A. There's a whole lot in the 1.2 release; see the section on
1490"Internet and WWW" in the Library Reference Manual. Highlights: a CGI
1491parser, a url retriever, an html parser.
Guido van Rossum061f1821994-10-06 16:03:45 +00001492
1493Steve Miale <smiale@cs.indiana.edu> has written a modular WWW browser
1494called Dancer. An alpha version can be FTP'ed from
Guido van Rossuma6c707c1995-01-02 17:32:28 +00001495<URL:ftp://ftp.cs.indiana.edu/pub/smiale/dancer.tar.gz>. (There are a
1496few articles about Dancer in the (hyper)mail archive
1497<URL:http://www.cwi.nl/~guido/hypermail/python-1994q3/index.html>.)
Guido van Rossum061f1821994-10-06 16:03:45 +00001498
Guido van Rossum7be34a81995-05-31 15:17:12 +000014994.30. Q. How do I run a subprocess with pipes connected to both input
Guido van Rossum796b2591995-01-20 23:05:52 +00001500and output?
1501
1502A. This is really a UNIX question. Also, in general, it is unwise to
1503do so, because you can easily cause a deadlock where the parent
1504process is blocked waiting for output from the child, while the child
1505is blocked waiting for input from the child. This can be caused
1506because the parent expects the child to output more text than it does,
1507or it can be caused by data being stuck in stdio buffers due to lack
1508of flushing. The Python parent can of course explicitly flush the data
1509it sends to the child before it reads any output, but if the child is
1510a naive C program it can easily have been written to never explicitly
1511flush its output, even if it is interactive, since flushing is
1512normally automatic.
1513
1514In many cases, all you really need is to run some data through a
1515command and get the result back. Unless the data is infinite in size,
1516the easiest (and often the most efficient!) way to do this is to write
1517it to a temporary file and run the command with that temporary file as
1518input. The standard module tempfile exports a function mktemp() which
1519generates unique temporary file names.
1520
1521If after reading all of the above you still want to connect two pipes
1522to a subprocess's standard input and output, here's a simple solution,
1523due to Jack Jansen:
1524
Guido van Rossume7d92d51995-10-11 18:06:54 +00001525 import os
1526 import sys
1527 import string
Guido van Rossum796b2591995-01-20 23:05:52 +00001528
Guido van Rossume7d92d51995-10-11 18:06:54 +00001529 MAXFD = 100 # Max number of file descriptors in this system
Guido van Rossum796b2591995-01-20 23:05:52 +00001530
Guido van Rossume7d92d51995-10-11 18:06:54 +00001531 def popen2(cmd):
1532 cmd = string.split(cmd)
1533 p2cread, p2cwrite = os.pipe()
1534 c2pread, c2pwrite = os.pipe()
1535 pid = os.fork()
1536 if pid == 0:
1537 # Child
1538 os.close(0)
1539 os.close(1)
Guido van Rossumca318ec1996-06-26 19:50:09 +00001540 if os.dup(p2cread) != 0:
Guido van Rossume7d92d51995-10-11 18:06:54 +00001541 sys.stderr.write('popen2: bad read dup\n')
Guido van Rossumca318ec1996-06-26 19:50:09 +00001542 if os.dup(c2pwrite) != 1:
Guido van Rossume7d92d51995-10-11 18:06:54 +00001543 sys.stderr.write('popen2: bad write dup\n')
1544 for i in range(3, MAXFD):
1545 try:
1546 os.close(i)
1547 except:
1548 pass
1549 try:
1550 os.execv(cmd[0], cmd)
1551 finally:
1552 os._exit(1)
1553 os.close(p2cread)
1554 tochild = os.fdopen(p2cwrite, 'w')
1555 os.close(c2pwrite)
1556 fromchild = os.fdopen(c2pread, 'r')
1557 return fromchild, tochild
Guido van Rossum796b2591995-01-20 23:05:52 +00001558
1559Note that many interactive programs (e.g. vi) don't work well with
1560pipes substituted for standard input and output. You will have to use
1561pseudo ttys ("ptys") instead of pipes. There is some undocumented
1562code to use these in the library module pty.py -- I'm afraid you're on
Guido van Rossum3fc9d731995-07-25 15:10:56 +00001563your own here.
1564
1565A different answer is a Python interface to Don Libes' "expect"
1566library. A prerelease of this is available on the Python ftp mirror
1567sites in the contrib subdirectory as expy-0.3.tar.gz, e.g.
1568<URL:ftp://ftp.python.org/pub/python/contrib/expy-0.3.tar.gz>.
Guido van Rossum796b2591995-01-20 23:05:52 +00001569
Guido van Rossum7be34a81995-05-31 15:17:12 +000015704.31. Q. How do I call a function if I have the arguments in a tuple?
Guido van Rossumac3f2121995-04-10 11:53:42 +00001571
1572A. Use the built-in function apply(). For instance,
1573
1574 func(1, 2, 3)
1575
1576is equivalent to
1577
1578 args = (1, 2, 3)
1579 apply(func, args)
1580
1581Note that func(args) is not the same -- it calls func() with exactly
1582one argument, the tuple args, instead of three arguments, the integers
15831, 2 and 3.
1584
Guido van Rossum7be34a81995-05-31 15:17:12 +000015854.32. Q. How do I enable font-lock-mode for Python in Emacs?
1586
1587A. Assuming you're already using python-mode and font-lock-mode
1588separately, all you need to do is put this in your .emacs file:
1589
Guido van Rossume7d92d51995-10-11 18:06:54 +00001590 (defun my-python-mode-hook ()
1591 (setq font-lock-keywords python-font-lock-keywords)
1592 (font-lock-mode 1))
1593 (add-hook 'python-mode-hook 'my-python-mode-hook)
Guido van Rossum7be34a81995-05-31 15:17:12 +00001594
15954.33. Q. Is there an inverse to the format operator (a la C's scanf())?
1596
1597A. Not as such.
1598
1599For simple input parsing, the easiest approach is usually to split
1600the line into whitespace-delimited words using string.split(), and to
1601convert decimal strings to numeric values using string.atoi(),
1602string.atol() or string.atof(). (Python's atoi() is 32-bit and its
1603atol() is arbitrary precision.) If you want to use another delimiter
1604than whitespace, use string.splitfield() (possibly combining it with
1605string.strip() which removes surrounding whitespace from a string).
1606
1607For more complicated input parsing, regular expressions (see module
1608regex) are better suited and more powerful than C's scanf().
1609
Guido van Rossumca318ec1996-06-26 19:50:09 +000016104.34. Q. Can I have Tk events handled while waiting for I/O?
1611
1612A. Yes, and you don't even need threads! But you'll have to
1613restructure your I/O code a bit. Tk has the equivalent of Xt's
1614XtAddInput() call, which allows you to register a callback function
1615which will be called from the Tk mainloop when I/O is possible on a
1616file descriptor. Here's what you need:
1617
1618 from Tkinter import tkinter
1619 tkinter.createfilehandler(file, mask, callback)
1620
1621The file may be a Python file or socket object (actually, anything
1622with a fileno() method), or an integer file descriptor. The mask is
1623one of the constants tkinter.READABLE or tkinter.WRITABLE. The
1624callback is called as follows:
1625
1626 callback(file, mask)
1627
1628You must unregister the callback when you're done, using
1629
1630 tkinter.deletefilehandler(file)
1631
1632Note: since you don't know *how many bytes* are available for reading,
1633you can't use the Python file object's read or readline methods, since
1634these will insist on reading a predefined number of bytes. For
1635sockets, the recv() or recvfrom() methods will work fine; for other
1636files, use os.read(file.fileno(), maxbytecount).
1637
16384.35. Q. How do I write a function with output parameters (call by reference)?
1639
1640A. [Mark Lutz] The thing to remember is that arguments are passed by
1641assignment in Python. Since assignment just creates references to
1642objects, there's no alias between an argument name in the caller and
1643callee, and so no call-by-reference per se. But you can simulate it
1644in a number of ways:
1645
16461) By using global variables; but you probably shouldn't :-)
1647
16482) By passing a mutable (changeable in-place) object:
1649
1650 def func1(a):
1651 a[0] = 'new-value' # 'a' references a mutable list
1652 a[1] = a[1] + 1 # changes a shared object
1653
1654 args = ['old-value', 99]
1655 func1(args)
1656 print args[0], args[1] # output: new-value 100
1657
16583) By return a tuple, holding the final values of arguments:
1659
1660 def func2(a, b):
1661 a = 'new-value' # a and b are local names
1662 b = b + 1 # assigned to new objects
1663 return a, b # return new values
1664
1665 x, y = 'old-value', 99
1666 x, y = func2(x, y)
1667 print x, y # output: new-value 100
1668
16694) And other ideas that fall-out from Python's object model. For
1670 instance, it might be clearer to pass in a mutable dictionary:
1671
1672 def func3(args):
1673 args['a'] = 'new-value' # args is a mutable dictionary
1674 args['b'] = args['b'] + 1 # change it in-place
1675
1676 args = {'a':' old-value', 'b': 99}
1677 func3(args)
1678 print args['a'], args['b']
1679
16805) Or bundle-up values in a class instance:
1681
1682 class callByRef:
1683 def __init__(self, **args):
1684 for (key, value) in args.items():
1685 setattr(self, key, value)
1686
1687 def func4(args):
1688 args.a = 'new-value' # args is a mutable callByRef
1689 args.b = args.b + 1 # change object in-place
1690
1691 args = callByRef(a='old-value', b=99)
1692 func4(args)
1693 print args.a, args.b
1694
1695 But there's probably no good reason to get this complicated :-).
1696
1697[Python' author favors solution 3 in most cases.]
1698
Guido van Rossum061f1821994-10-06 16:03:45 +00001699
Guido van Rossuma7925f11994-01-26 10:20:16 +000017005. Extending Python
1701===================
1702
17035.1. Q. Can I create my own functions in C?
1704
1705A. Yes, you can create built-in modules containing functions,
Guido van Rossum24349991994-02-02 14:12:45 +00001706variables, exceptions and even new types in C. This is explained in
1707the document "Extending and Embedding the Python Interpreter" (the
1708LaTeX file Doc/ext.tex). Also read the chapter on dynamic loading.
Guido van Rossuma7925f11994-01-26 10:20:16 +00001709
17105.2. Q. Can I create my own functions in C++?
1711
1712A. Yes, using the C-compatibility features found in C++. Basically
1713you place extern "C" { ... } around the Python include files and put
1714extern "C" before each function that is going to be called by the
1715Python interpreter. Global or static C++ objects with constructors
1716are probably not a good idea.
1717
Guido van Rossum7ce61c11994-06-13 15:13:56 +000017185.3. Q. How can I execute arbitrary Python statements from C?
1719
1720A. The highest-level function to do this is run_command() which takes
1721a single string argument which is executed in the context of module
1722__main__ and returns 0 for success and -1 when an exception occurred
1723(including SyntaxError). If you want more control, use run_string();
1724see the source for run_command() in Python/pythonrun.c.
1725
17265.4. Q. How can I evaluate an arbitrary Python expression from C?
1727
1728A. Call the function run_string() from the previous question with the
1729start symbol eval_input; it then parses an expression, evaluates it
1730and returns its value. See exec_eval() in Python/bltinmodule.c.
1731
17325.5. Q. How do I extract C values from a Python object?
1733
1734A. That depends on the object's type. If it's a tuple,
1735gettuplesize(o) returns its length and gettupleitem(o, i) returns its
1736i'th item; similar for lists with getlistsize(o) and getlistitem(o,
1737i). For strings, getstringsize(o) returns its length and
1738getstringvalue(o) a pointer to its value (note that Python strings may
1739contain null bytes so strlen() is not safe). To test which type an
1740object is, first make sure it isn't NULL, and then use
1741is_stringobject(o), is_tupleobject(o), is_listobject(o) etc.
1742
17435.6. Q. How do I use mkvalue() to create a tuple of arbitrary length?
1744
1745A. You can't. Use t = newtupleobject(n) instead, and fill it with
1746objects using settupleitem(t, i, o) -- note that this "eats" a
1747reference count of o. Similar for lists with newlistobject(n) and
Guido van Rossumb34e8aa1994-09-23 14:20:38 +00001748setlistitem(l, i, o). Note that you *must* set all the tuple items to
1749some value before you pass the tuple to Python code --
1750newtupleobject(n) initializes them to NULL, which isn't a valid Python
1751value.
1752
Guido van Rossum796b2591995-01-20 23:05:52 +000017535.7. Q. What happened to mktuple(), featured in an example in the
Guido van Rossumb34e8aa1994-09-23 14:20:38 +00001754Extensions manual?
1755
1756A. It's a typo, I meant newtupleobject() (see previous question).
1757
17585.8. Q. How do I call an object's method from C?
1759
1760A. Here's a function (untested) that might become part of the next
1761release in some form. It uses <stdarg.h> to allow passing the
1762argument list on to vmkvalue():
1763
Guido van Rossuma6c707c1995-01-02 17:32:28 +00001764 object *call_method(object *inst, char *methodname, char *format, ...)
1765 {
1766 object *method;
1767 object *args;
1768 object *result;
1769 va_list va;
1770 method = getattr(inst, methodname);
1771 if (method == NULL) return NULL;
1772 va_start(va, format);
1773 args = vmkvalue(format, va);
1774 va_end(va);
1775 if (args == NULL) {
1776 DECREF(method);
1777 return NULL;
1778 }
1779 result = call_object(method, args);
1780 DECREF(method);
1781 DECREF(args);
1782 return result;
1783 }
Guido van Rossumb34e8aa1994-09-23 14:20:38 +00001784
1785This works for any instance that has methods -- whether built-in or
1786user-defined. You are responsible for eventually DECREF'ing the
1787return value.
1788
1789To call, e.g., a file object's "seek" method with arguments 10, 0
1790(assuming the file object pointer is "f"):
1791
Guido van Rossuma6c707c1995-01-02 17:32:28 +00001792 res = call_method(f, "seek", "(OO)", 10, 0);
1793 if (res == NULL) {
1794 ... an exception occurred ...
1795 }
1796 else {
1797 DECREF(res);
1798 }
Guido van Rossumb34e8aa1994-09-23 14:20:38 +00001799
1800Note that since call_object() *always* wants a tuple for the argument
1801list, to call a function without arguments, pass "()" for the format,
1802and to call a function with one argument, surround the argument in
1803parentheses, e.g. "(i)".
1804
18055.9. Q. How do I catch the output from print_error()?
1806
1807A. (Due to Mark Hammond):
1808
1809* in Python code, define an object that supports the "write()" method.
1810FWIW, there seems to be a small problem that requires the 'softspace'
Guido van Rossuma8a8d4a1995-03-10 16:19:31 +00001811attribute to be defined too (fixed in 1.2).
Guido van Rossumb34e8aa1994-09-23 14:20:38 +00001812
1813* redirect sys.stdout and sys.stderr to this object.
1814
Guido van Rossum061f1821994-10-06 16:03:45 +00001815* call print_error, or just allow the standard traceback mechanism to
Guido van Rossumb34e8aa1994-09-23 14:20:38 +00001816work.
1817
Guido van Rossum061f1821994-10-06 16:03:45 +00001818Then, the output will go wherever your write() method sends it.
Guido van Rossumb34e8aa1994-09-23 14:20:38 +00001819
18205.10. Q. How do I access a module written in Python from C?
1821
1822A. You can get a pointer to the module object as follows:
1823
Guido van Rossuma6c707c1995-01-02 17:32:28 +00001824 module = import_module("<modulename>");
Guido van Rossumb34e8aa1994-09-23 14:20:38 +00001825
1826If the module hasn't been imported yet (i.e. it is not yet present in
1827sys.modules), this initializes the module; otherwise it simply returns
1828the value of sys.modules["<modulename>"]. Note that it doesn't enter
1829the module into any namespace -- it only ensures it has been
1830initialized and is stored in sys.modules.
1831
1832You can then access the module's attributes (i.e. any name defined in
1833the module) as follows:
1834
Guido van Rossuma6c707c1995-01-02 17:32:28 +00001835 attr = getattr(module, "<attrname>");
Guido van Rossumb34e8aa1994-09-23 14:20:38 +00001836
1837Calling setattr(), to assign to variables in the module, also works.
Guido van Rossum7ce61c11994-06-13 15:13:56 +00001838
Guido van Rossumb0a2ce51995-08-28 19:41:35 +000018395.11. Q. How do I interface to C++ objects from Python?
1840
1841A. Depending on your requirements, there are many approaches. Begin
1842by reading the "Extending and Embedding" document (Doc/ext.tex, see
1843also <URL:http://www.python.org/doc/>). Realize that for the Python
1844run-time system, there isn't a whole lot of difference between C and
1845C++ -- so the strategy to build a new Python type around a C structure
1846(pointer) type will also work for C++ objects.
1847
1848Automatic generation of interfaces between Python and C++ is still at
1849the horizon -- parsing C++ header files requires an almost complete
1850C++ parser, and many features aren't easily translated from C++ to
1851Python: certain forms of operator oveloading, function overloading
1852(best approached by a varargs function which explicitly type-checks
1853its arguments), and reference arguments are just a number of features
1854that are hard to translate correctly if at all.
1855
1856The hardest problem is to transparently translate the C++ class
1857hierarchy to Python, so that Python programs derive classes from C++
1858classes. Given suitable constraints, this may be possible, but it
1859would require more space than I have in this FAQ to explain how.
1860In any case, you can get quite a bit done without this, using just the
1861existing classes from Python.
1862
1863If this all seems rather daunting, that may be because it is -- C++
1864isn't exactly a baby to handle without gloves! However, people have
1865accomplished amazing feats of interfacing between Python and C++, and
1866a detailed question posted to the Python list is likely to elicit some
1867interesting and useful responses.
1868
Guido van Rossuma7925f11994-01-26 10:20:16 +00001869
18706. Python's design
1871==================
1872
Guido van Rossumb0a2ce51995-08-28 19:41:35 +000018736.1. Q. Why isn't there a generic copying operation for objects in Python?
Guido van Rossuma7925f11994-01-26 10:20:16 +00001874
Guido van Rossumb0a2ce51995-08-28 19:41:35 +00001875A. Historically, there wasn't. However, starting in Python 1.2,
1876there's a library module "copy" which supports both shallow and deep
1877copying of most common Python objects (though not things like open
1878files, sockets or windows), including an extensible mechanism to copy
1879class instances.
Guido van Rossuma7925f11994-01-26 10:20:16 +00001880
18816.2. Q. Why isn't there a generic way to implement persistent objects
1882in Python? (Persistent == automatically saved to and restored from
1883disk.)
1884
Guido van Rossumb0a2ce51995-08-28 19:41:35 +00001885A. Like the previous question, historically, there wasn't. The
1886library module "pickle" now solves this in a very general way (though
1887you still can't store things like open files, sockests or windows),
1888and the library module "shelve" uses pickle and (g)dbm to create
1889presistent mappings containing arbitrary Python objects. There are
1890some problems with shelve when using gdbm which will be solved in
1891Python 1.3.
Guido van Rossumb34e8aa1994-09-23 14:20:38 +00001892
Guido van Rossuma7925f11994-01-26 10:20:16 +000018936.3. Q. Why isn't there a switch or case statement in Python?
1894
1895A. You can do this easily enough with a sequence of
1896if... elif... elif... else. There have been some proposals for switch
Guido van Rossum061f1821994-10-06 16:03:45 +00001897statement syntax, but there is no consensus (yet) on whether and how
Guido van Rossuma7925f11994-01-26 10:20:16 +00001898to do range tests.
1899
Guido van Rossumc50158e1994-05-31 09:18:50 +000019006.4. Q. Why does Python use indentation for grouping of statements?
1901
1902A. Basically I believe that using indentation for grouping is
1903extremely elegant and contributes a lot to the clarity of the average
1904Python program. Most people learn to love this feature after a while.
1905Some arguments for it:
1906
1907- Since there are no begin/end brackets there cannot be a disagreement
1908between grouping perceived by the parser and the human reader. I
1909remember long ago seeing a C fragment like this:
1910
Guido van Rossuma6c707c1995-01-02 17:32:28 +00001911 if (x <= y)
1912 x++;
1913 y--;
1914 z++;
Guido van Rossumc50158e1994-05-31 09:18:50 +00001915
1916and staring a long time at it wondering why y was being decremented
1917even for x > y... (And I wasn't a C newbie then either.)
1918
Guido van Rossum7be34a81995-05-31 15:17:12 +00001919- Since there are no begin/end brackets, Python is much less prone to
1920coding-style conflicts. In C there are loads of different ways to
1921place the braces (including the choice whether to place braces around
1922single statements in certain cases, for consistency). If you're used
1923to reading (and writing) code that uses one style, you will feel at
1924least slightly uneasy when reading (or being required to write)
1925another style.
Guido van Rossumc50158e1994-05-31 09:18:50 +00001926
1927- Many coding styles place begin/end brackets on a line by themself.
1928This makes programs considerably longer and wastes valuable screen
1929space, making it harder to get a good overview over a program.
1930Ideally, a function should fit on one basic tty screen (say, 20
1931lines). 20 lines of Python are worth a LOT more than 20 lines of C.
1932This is not solely due to the lack of begin/end brackets (the lack of
1933declarations also helps, and the powerful operations of course), but
1934it certainly helps!
1935
Guido van Rossum3de27361994-07-25 14:19:33 +000019366.5. Q. Why are Python strings immutable?
1937
1938A. There are two advantages. One is performance: knowing that a
1939string is immutable makes it easy to lay it out at construction time
1940-- fixed and unchanging storage requirements. (This is also one of
Guido van Rossum061f1821994-10-06 16:03:45 +00001941the reasons for the distinction between tuples and lists.) The
Guido van Rossum3de27361994-07-25 14:19:33 +00001942other is that strings in Python are considered as "elemental" as
1943numbers. No amount of activity will change the value 8 to anything
1944else, and in Python, no amount of activity will change the string
1945"eight" to anything else. (Adapted from Jim Roskind)
1946
19476.6. Q. Why don't strings have methods like index() or sort(), like
1948lists?
1949
1950A. Good question. Strings currently don't have methods at all
1951(likewise tuples and numbers). Long ago, it seemed unnecessary to
1952implement any of these functions in C, so a standard library module
1953"string" written in Python was created that performs string related
1954operations. Since then, the cry for performance has moved most of
1955them into the built-in module strop (this is imported by module
Guido van Rossumf8c76d01994-08-17 12:19:53 +00001956string, which is still the preferred interface, without loss of
Guido van Rossum3de27361994-07-25 14:19:33 +00001957performance except during initialization). Some of these functions
1958(e.g. index()) could easily be implemented as string methods instead,
1959but others (e.g. sort()) can't, since their interface prescribes that
1960they modify the object, while strings are immutable (see the previous
1961question).
1962
19636.7. Q. Why does Python use methods for some functionality
1964(e.g. list.index()) but functions for other (e.g. len(list))?
1965
1966A. Functions are used for those operations that are generic for a
1967group of types and which should work even for objects that don't have
1968methods at all (e.g. numbers, strings, tuples). Also, implementing
1969len(), max(), min() as a built-in function is actually less code than
1970implementing them as methods for each type. One can quibble about
1971individual cases but it's really too late to change such things
1972fundamentally now.
1973
19746.8. Q. Why can't I derive a class from built-in types (e.g. lists or
1975files)?
1976
1977A. This is caused by the relatively late addition of (user-defined)
1978classes to the language -- the implementation framework doesn't easily
1979allow it. See the answer to question 4.2 for a work-around. This
1980*may* be fixed in the (distant) future.
1981
19826.9. Q. Why must 'self' be declared and used explicitly in method
1983definitions and calls?
1984
1985A. By asking this question you reveal your C++ background. :-)
1986When I added classes, this was (again) the simplest way of
1987implementing methods without too many changes to the interpreter. I
1988borrowed the idea from Modula-3. It turns out to be very useful, for
1989a variety of reasons.
1990
1991First, it makes it more obvious that you are using a method or
1992instance attribute instead of a local variable. Reading "self.x" or
1993"self.meth()" makes it absolutely clear that an instance variable or
1994method is used even if you don't know the class definition by heart.
1995In C++, you can sort of tell by the lack of a local variable
Guido van Rossum061f1821994-10-06 16:03:45 +00001996declaration (assuming globals are rare or easily recognizable) -- but
Guido van Rossum3de27361994-07-25 14:19:33 +00001997in Python, there are no local variable declarations, so you'd have to
1998look up the class definition to be sure.
1999
2000Second, it means that no special syntax is necessary if you want to
2001explicitly reference or call the method from a particular class. In
2002C++, if you want to use a method from base class that is overridden in
2003a derived class, you have to use the :: operator -- in Python you can
2004write baseclass.methodname(self, <argument list>). This is
2005particularly useful for __init__() methods, and in general in cases
2006where a derived class method wants to extend the base class method of
2007the same name and thus has to call the base class method somehow.
2008
2009Lastly, for instance variables, it solves a syntactic problem with
2010assignment: since local variables in Python are (by definition!) those
2011variables to which a value assigned in a function body (and that
2012aren't explicitly declared global), there has to be some way to tell
2013the interpreter that an assignment was meant to assign to an instance
2014variable instead of to a local variable, and it should preferably be
2015syntactic (for efficiency reasons). C++ does this through
2016declarations, but Python doesn't have declarations and it would be a
2017pity having to introduce them just for this purpose. Using the
2018explicit "self.var" solves this nicely. Similarly, for using instance
2019variables, having to write "self.var" means that references to
2020unqualified names inside a method don't have to search the instance's
2021directories.
2022
Guido van Rossumb34e8aa1994-09-23 14:20:38 +000020236.10. Q. Can't you emulate threads in the interpreter instead of
2024relying on an OS-specific thread implementation?
2025
2026A. Unfortunately, the interpreter pushes at least one C stack frame
2027for each Python stack frame. Also, extensions can call back into
2028Python at almost random moments. Therefore a complete threads
2029implementation requires thread support for C.
2030
Guido van Rossum061f1821994-10-06 16:03:45 +000020316.11. Q. Why can't lambda forms contain statements?
2032
2033A. Python lambda forms cannot contain statements because Python's
Guido van Rossum796b2591995-01-20 23:05:52 +00002034syntactic framework can't handle statements nested inside expressions.
Guido van Rossum061f1821994-10-06 16:03:45 +00002035
2036However, in Python, this is not a serious problem. Unlike lambda
2037forms in other languages, where they add functionality, Python lambdas
2038are only a shorthand notation if you're too lazy to define a function.
2039
2040Functions are already first class objects in Python, and can be
2041declared in a local scope. Therefore the only advantage of using a
2042lambda form instead of a locally-defined function is that you'll have
2043to invent a name for the function -- but that's just a local variable
2044to which the function object (which is exactly the same type of object
2045that a lambda form yields) is assigned!
2046
20476.12. Q. Why is there no more efficient way of iterating over a dictionary
2048than first constructing the list of keys()?
2049
2050A. Have you tried it? I bet it's fast enough for your purposes! In
2051most cases such a list takes only a few percent of the space occupied
2052by the dictionary -- it needs only 4 bytes (the size of a pointer) per
2053key -- a dictionary costs 8 bytes per key plus between 30 and 70
2054percent hash table overhead, plus the space for the keys and values --
2055by necessity all keys are unique objects and a string object (the most
2056common key type) costs at least 18 bytes plus the length of the
2057string. Add to that the values contained in the dictionary, and you
2058see that 4 bytes more per item really isn't that much more memory...
2059
2060A call to dict.keys() makes one fast scan over the dictionary
2061(internally, the iteration function does exist) copying the pointers
2062to the key objects into a pre-allocated list object of the right size.
2063The iteration time isn't lost (since you'll have to iterate anyway --
2064unless in the majority of cases your loop terminates very prematurely
2065(which I doubt since you're getting the keys in random order).
2066
2067I don't expose the dictionary iteration operation to Python
2068programmers because the dictionary shouldn't be modified during the
2069entire iteration -- if it is, there's a very small chance that the
2070dictionary is reorganized because the hash table becomes too full, and
2071then the iteration may miss some items and see others twice. Exactly
2072because this only occurs rarely, it would lead to hidden bugs in
2073programs: it's easy never to have it happen during test runs if you
2074only insert or delete a few items per iteration -- but your users will
2075surely hit upon it sooner or later.
2076
Guido van Rossumb0a2ce51995-08-28 19:41:35 +000020776.13. Q. Can Python be compiled to machine code, C or some other language?
2078
2079A. Not easily. Python's high level data types, dynamic typing of
2080objects and run-time invocation of the interpreter (using eval() or
2081exec) together mean that a "compiled" Python program would probably
2082consist mostly of calls into the Python run-time system, even for
2083seemingly simple operations like "x+1". Thus, the performance gain
2084would probably be minimal.
2085
2086Internally, Python source code is always translated into a "virtual
2087machine code" or "byte code" representation before it is interpreted
2088(by the "Python virtual machine" or "bytecode interpreter"). In order
2089to avoid the overhead of parsing and translating modules that rarely
2090change over and over again, this byte code is written on a file whose
2091name ends in ".pyc" whenever a module is parsed (from a file whose
2092name ends in ".py"). When the corresponding .py file is changed, it
2093is parsed and translated again and the .pyc file is rewritten. There
2094is no performance difference once the .pyc file has been loaded (the
2095bytecode read from the .pyc file is exactly the same as the bytecode
2096created by direct translation). The only difference is that loading
2097code from a .pyc file is faster than parsing and translating a .py
2098file, so the presence of precompiled .pyc files will generally improve
2099start-up time of Python scripts. If desired, the Lib/compileall.py
2100module/script can be used to force creation of valid .pyc files for a
2101given set of modules.
2102
2103If you are looking for a way to translate Python programs in order to
2104distribute them in binary form, without the need to distribute the
2105interpreter and library as well, have a look at the freeze.py script
2106in the Tools/freeze directory. This creates a single binary file
2107incorporating your program, the Python interpreter, and those parts of
2108the Python library that are needed by your program. Of course, the
2109resulting binary will only run on the same type of platform as that
2110used to create it.
2111
2112Hints for proper usage of freeze.py:
2113
2114- the script must be in a file whose name ends in .py
2115
2116- you must have installed Python fully:
2117
Guido van Rossume7d92d51995-10-11 18:06:54 +00002118 make install
2119 make libinstall
2120 make inclinstall
2121 make libainstall
Guido van Rossumb0a2ce51995-08-28 19:41:35 +00002122
Guido van Rossum05151e01995-09-28 13:24:46 +000021236.14. Q. Why doesn't Python use proper garbage collection?
2124
2125A. It's looking less and less likely that Python will ever get
2126"automatic" garbage collection (GC). For one thing, unless this were
2127added to C as a standard feature, it's a portability pain in the ass.
2128And yes, I know about the Xerox library. It has bits of assembler
2129code for *most* *common* platforms. Not for all. And although it is
2130mostly transparent, it isn't completely transparent (when I once
2131linked Python with it, it dumped core).
2132
2133"Proper" GC also becomes a problem when Python gets embedded into
2134other applications. While in a stand-alone Python it may be fine to
2135replace the standard malloc() and free() with versions provided by the
2136GC library, an application embedding Python may want to have its *own*
2137substitute for malloc() and free(), and may not want Python's. Right
2138now, Python works with anything that implements malloc() and free()
2139properly.
2140
2141Besides, the predictability of destructor calls in Python is kind of
2142attractive. With GC, the following code (which is fine in current
2143Python) will run out of file descriptors long before it runs out of
2144memory:
2145
Guido van Rossume7d92d51995-10-11 18:06:54 +00002146 for file in <very long list of files>:
2147 f = open(file)
2148 c = file.read(1)
Guido van Rossum05151e01995-09-28 13:24:46 +00002149
2150Using the current reference counting and destructor scheme, each new
2151assignment to f closes the previous file. Using GC, this is not
2152guaranteed. Sure, you can think of ways to fix this. But it's not
2153off-the-shelf technology.
2154
Guido van Rossuma7925f11994-01-26 10:20:16 +00002155
21567. Using Python on non-UNIX platforms
2157=====================================
2158
Guido van Rossum91f60831994-02-15 15:52:27 +000021597.1. Q. Is there a Mac version of Python?
Guido van Rossuma7925f11994-01-26 10:20:16 +00002160
Guido van Rossume530c581995-04-10 12:32:16 +00002161A. Yes, see the "mac" subdirectory of the distribution sites,
Guido van Rossum7be34a81995-05-31 15:17:12 +00002162e.g. <URL:ftp://ftp.python.org/pub/python/mac/>.
Guido van Rossuma7925f11994-01-26 10:20:16 +00002163
Guido van Rossum91f60831994-02-15 15:52:27 +000021647.2. Q. Is there a DOS version of Python?
Guido van Rossuma7925f11994-01-26 10:20:16 +00002165
Guido van Rossume530c581995-04-10 12:32:16 +00002166A. Yes, see the "pc" subdirectory of the distribution sites,
Guido van Rossum7be34a81995-05-31 15:17:12 +00002167e.g. <URL:ftp://ftp.python.org/pub/python/pc/>.
Guido van Rossuma7925f11994-01-26 10:20:16 +00002168
Guido van Rossume530c581995-04-10 12:32:16 +000021697.3. Q. Is there a Windows 3.1(1) version of Python?
Guido van Rossumb34e8aa1994-09-23 14:20:38 +00002170
Guido van Rossume530c581995-04-10 12:32:16 +00002171A. Yes, also see the "pc" subdirectory of the distribution sites,
Guido van Rossum3fc9d731995-07-25 15:10:56 +00002172e.g. <URL:ftp://ftp.python.org/pub/python/pc/>. You may also be able
2173to run either of the Windows NT versions (see next question) if you
2174have Microsoft's "win32s".
Guido van Rossumb34e8aa1994-09-23 14:20:38 +00002175
Guido van Rossum91f60831994-02-15 15:52:27 +000021767.4. Q. Is there a Windows NT version of Python?
2177
Guido van Rossum3fc9d731995-07-25 15:10:56 +00002178A. There are two, both sporting DLL support for dynamic loading of
2179Python modules, and extensions to access the Win32 GUI API.
2180
2181Mark Hammond <MHammond@cmutual.com.au> maintains an NT port which
2182includes an interface to the Microsoft Foundation Classes and a Python
2183programming environment using it that's written mostly in Python. See
2184<URL:ftp://ftp.python.org/pub/python/nt/>.
2185
2186Jim Ahlstrom's WPY portable GUI runs on Windows NT and is modeled
2187after the Microsoft Foundation Classes. Source and binaries are
2188available in <URL:ftp://ftp.python.org/pub/python/wpy>.
Guido van Rossum91f60831994-02-15 15:52:27 +00002189
Guido van Rossuma6c707c1995-01-02 17:32:28 +00002190Sam Rushing <rushing@squirl.oau.org> once announced he knows how to
2191build Python for the Windows NT on the DEC Alpha AXP.
Guido van Rossum061f1821994-10-06 16:03:45 +00002192
2193Note that currently there is no unified compilation environment for
2194all NT platforms -- hopefully Microsoft will fix this with the release
2195of Visual C++ 2.0.
2196
Guido van Rossume530c581995-04-10 12:32:16 +000021977.5. Q. Is there a Windows 95 version of Python?
Guido van Rossum7ce61c11994-06-13 15:13:56 +00002198
Guido van Rossum3fc9d731995-07-25 15:10:56 +00002199A. The Windows NT versions might work, otherwise the Windows 3.1(1)
Guido van Rossume530c581995-04-10 12:32:16 +00002200version should work (isn't Windows 95 supposed to be backwards
2201compatible?).
Guido van Rossum7ce61c11994-06-13 15:13:56 +00002202
Guido van Rossume530c581995-04-10 12:32:16 +000022037.6. Q. Is there an OS/2 version of Python?
Guido van Rossumb34e8aa1994-09-23 14:20:38 +00002204
Guido van Rossume530c581995-04-10 12:32:16 +00002205A. Yes, also see the "pc" subdirectory of the distribution sites,
Guido van Rossum7be34a81995-05-31 15:17:12 +00002206e.g. <URL:ftp://ftp.python.org/pub/python/pc/>.
Guido van Rossumb34e8aa1994-09-23 14:20:38 +00002207
Guido van Rossume530c581995-04-10 12:32:16 +000022087.7. Q. Is there a VMS version of Python?
2209
Guido van Rossum3fc9d731995-07-25 15:10:56 +00002210A. Donn Cave <donn@cac.washington.edu> did a partial port. The
2211results of his efforts are on public display in
Guido van Rossumbf8e7d51995-08-28 03:09:13 +00002212<<URL:ftp://ftp.python.org/pub/python/contrib/vms.tar.gz/>. Someone
2213else is working on a more complete port, for details watch the list.
Guido van Rossume530c581995-04-10 12:32:16 +00002214
Guido van Rossum3fc9d731995-07-25 15:10:56 +000022157.8. Q. What about IBM mainframes, or other non-UNIX platforms?
Guido van Rossumb34e8aa1994-09-23 14:20:38 +00002216
Guido van Rossumb0a2ce51995-08-28 19:41:35 +00002217A. I haven't heard about these, except I remember hearing about an
2218OS/9 port and a port to Vxworks (both operating systems for embedded
2219systems). If you're interested in any of this, go directly to the
2220newsgroup and ask there, you may find exactly what you need. For
2221example, a port to MPE/iX 5.0 on HP3000 computers was just announced,
2222see <URL:http://www.allegro.com/software/>.
Guido van Rossumb34e8aa1994-09-23 14:20:38 +00002223
Guido van Rossume530c581995-04-10 12:32:16 +000022247.9. Q. Where are the source or Makefiles for the non-UNIX versions?
Guido van Rossumb34e8aa1994-09-23 14:20:38 +00002225
Guido van Rossume530c581995-04-10 12:32:16 +00002226A. The standard sources can (almost) be used. Additional sources can
2227be found in the platform-specific subdirectories of the distribution.
Guido van Rossumb34e8aa1994-09-23 14:20:38 +00002228
Guido van Rossume530c581995-04-10 12:32:16 +000022297.10. Q. What is the status and support for the non-UNIX versions?
Guido van Rossumb34e8aa1994-09-23 14:20:38 +00002230
2231A. I don't have access to most of these platforms, so in general I am
2232dependent on material submitted by volunteers(*). However I strive to
2233integrate all changes needed to get it to compile on a particular
2234platform back into the standard sources, so porting of the next
2235version to the various non-UNIX platforms should be easy.
2236
Guido van Rossuma6c707c1995-01-02 17:32:28 +00002237(*) For the Macintosh, that volunteer is me, with help from Jack
2238Jansen <jack@cwi.nl>.
Guido van Rossumb34e8aa1994-09-23 14:20:38 +00002239
Guido van Rossume530c581995-04-10 12:32:16 +000022407.11. Q. I have a PC version but it appears to be only a binary.
Guido van Rossum7ce61c11994-06-13 15:13:56 +00002241Where's the library?
Guido van Rossuma7925f11994-01-26 10:20:16 +00002242
2243A. You still need to copy the files from the distribution directory
Guido van Rossum91f60831994-02-15 15:52:27 +00002244"python/Lib" to your system. If you don't have the full distribution,
Guido van Rossume530c581995-04-10 12:32:16 +00002245you can get the file lib<version>.tar.gz from most ftp sites carrying
2246Python; this is a subset of the distribution containing just those
Guido van Rossum7be34a81995-05-31 15:17:12 +00002247files, e.g. <URL:ftp://ftp.python.org/pub/python/src/lib1.1.tar.gz>.
Guido van Rossuma7925f11994-01-26 10:20:16 +00002248
Guido van Rossum5333c5d1994-04-11 11:06:22 +00002249Once you have installed the library, you need to point sys.path to it.
2250Assuming the library is in C:\misc\python\lib, the following commands
2251will point your Python interpreter to it (note the doubled backslashes
2252-- you can also use single forward slashes instead):
2253
Guido van Rossuma6c707c1995-01-02 17:32:28 +00002254 >>> import sys
2255 >>> sys.path.insert(0, 'C:\\misc\\python\\lib')
2256 >>>
Guido van Rossum5333c5d1994-04-11 11:06:22 +00002257
2258For a more permanent effect, set the environment variable PYTHONPATH,
2259as follows (talking to a DOS prompt):
2260
Guido van Rossuma6c707c1995-01-02 17:32:28 +00002261 C> SET PYTHONPATH=C:\misc\python\lib
Guido van Rossum5333c5d1994-04-11 11:06:22 +00002262
Guido van Rossume530c581995-04-10 12:32:16 +000022637.12. Q. Where's the documentation for the Mac or PC version?
Guido van Rossuma7925f11994-01-26 10:20:16 +00002264
Guido van Rossume530c581995-04-10 12:32:16 +00002265A. The documentation for the Unix version also applies to the Mac and
2266PC versions. Where applicable, differences are indicated in the text.
Guido van Rossuma7925f11994-01-26 10:20:16 +00002267
Guido van Rossume530c581995-04-10 12:32:16 +000022687.13. Q. The Mac (PC) version doesn't seem to have any facilities for
Guido van Rossum91f60831994-02-15 15:52:27 +00002269creating or editing programs apart from entering it interactively, and
2270there seems to be no way to save code that was entered interactively.
2271How do I create a Python program on the Mac (PC)?
Guido van Rossuma7925f11994-01-26 10:20:16 +00002272
Guido van Rossumb34e8aa1994-09-23 14:20:38 +00002273A. Use an external editor. On the Mac, BBEdit seems to be a popular
2274no-frills text editor. I work like this: start the interpreter; edit
2275a module file using BBedit; import and test it in the interpreter;
2276edit again in BBedit; then use the built-in function reload() to
2277re-read the imported module; etc.
Guido van Rossum5333c5d1994-04-11 11:06:22 +00002278
2279Regarding the same question for the PC, Kurt Wm. Hemr writes: "While
2280anyone with a pulse could certainly figure out how to do the same on
2281MS-Windows, I would recommend the NotGNU Emacs clone for MS-Windows.
2282Not only can you easily resave and "reload()" from Python after making
2283changes, but since WinNot auto-copies to the clipboard any text you
2284select, you can simply select the entire procedure (function) which
2285you changed in WinNot, switch to QWPython, and shift-ins to reenter
2286the changed program unit."