blob: 637acec19dcc13fc6b00200dbd6723b27df62a8f [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
7Supersedes: <DE1DI9.8MF@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 Rossum05151e01995-09-28 13:24:46 +000012Version: 1.28
13Last-modified: 28 September 1995
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 Rossumb0a2ce51995-08-28 19:41:35 +000024 Guido van Rossum
25 C.N.R.I.
26 1895 Preston White Drive
27 Reston, VA 22091
28 U.S.A.
29Email: <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 Rossum7be34a81995-05-31 15:17:12 +000032<URL:ftp://ftp.python.org/pub/python/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.
109 3.10. Q. Trouble with prototypes on Ultrix.
110 3.11. Q. Trouble with posix.listdir on NeXTSTEP 3.2.
111 3.12. Q. Other trouble building Python on platform X.
112 3.13. Q. How to configure dynamic loading on Lixux.
Guido van Rossum3fc9d731995-07-25 15:10:56 +0000113 3.14. Q. Under Solaris 2.x, using GCC, how do I use shared libraries?
114 3.15. Q. Errors when linking with a shared library containing C++ code.
Guido van Rossum05151e01995-09-28 13:24:46 +0000115 3.16. Q. Tk menus or radiobuttons don't work properly in Python 1.2.
116 3.17. Q. I built with tkintermodule.c enabled but get "Tkinter not found".
117 3.18. Q. I built with Tk 4.0 but Tkinter complains about the Tk version.
118 3.19. Q. Tk doesn't work right on DEC Alpha.
Guido van Rossuma7925f11994-01-26 10:20:16 +0000119
120 4. Programming in Python
Guido van Rossum24349991994-02-02 14:12:45 +0000121 4.1. Q. Is there a source code level debugger with breakpoints, step,
122 etc.?
123 4.2. Q. Can I create an object class with some methods implemented in
Guido van Rossuma7925f11994-01-26 10:20:16 +0000124 C and others in Python (e.g. through inheritance)? (Also phrased as:
125 Can I use a built-in type as base class?)
Guido van Rossum24349991994-02-02 14:12:45 +0000126 4.3. Q. Is there a curses/termcap package for Python?
127 4.4. Q. Is there an equivalent to C's onexit() in Python?
128 4.5. Q. When I define a function nested inside another function, the
Guido van Rossuma7925f11994-01-26 10:20:16 +0000129 nested function seemingly can't access the local variables of the
130 outer function. What is going on? How do I pass local data to a
131 nested function?
Guido van Rossum24349991994-02-02 14:12:45 +0000132 4.6. Q. How do I iterate over a sequence in reverse order?
133 4.7. Q. My program is too slow. How do I speed it up?
134 4.8. Q. When I have imported a module, then edit it, and import it
Guido van Rossuma7925f11994-01-26 10:20:16 +0000135 again (into the same Python process), the changes don't seem to take
136 place. What is going on?
Guido van Rossumb34e8aa1994-09-23 14:20:38 +0000137 4.9. Q. How do I find the current module name?
Guido van Rossuma6c707c1995-01-02 17:32:28 +0000138 4.10. Q. I have a module in which I want to execute some extra code
139 when it is run as a script. How do I find out whether I am running as
140 a script?
141 4.11. Q. I try to run a program from the Demo directory but it fails
142 with ImportError: No module named ...; what gives?
Guido van Rossum061f1821994-10-06 16:03:45 +0000143 4.12. Q. I have successfully built Python with STDWIN but it can't
144 find some modules (e.g. stdwinevents).
Guido van Rossumb34e8aa1994-09-23 14:20:38 +0000145 4.13. Q. What GUI toolkits exist for Python?
Guido van Rossum061f1821994-10-06 16:03:45 +0000146 4.14. Q. Are there any interfaces to database packages in Python?
Guido van Rossumb34e8aa1994-09-23 14:20:38 +0000147 4.15. Q. Is it possible to write obfuscated one-liners in Python?
148 4.16. Q. Is there an equivalent of C's "?:" ternary operator?
149 4.17. Q. My class defines __del__ but it is not called when I delete the
150 object.
Guido van Rossuma6c707c1995-01-02 17:32:28 +0000151 4.18. Q. How do I change the shell environment for programs called
152 using os.popen() or os.system()? Changing os.environ doesn't work.
Guido van Rossumb34e8aa1994-09-23 14:20:38 +0000153 4.19. Q. What is a class?
154 4.20. Q. What is a method?
155 4.21. Q. What is self?
156 4.22. Q. What is a unbound method?
Guido van Rossuma6c707c1995-01-02 17:32:28 +0000157 4.23. Q. How do I call a method defined in a base class from a derived
158 class that overrides it?
159 4.24. Q. How do I call a method from a base class without using the
160 name of the base class?
Guido van Rossumb34e8aa1994-09-23 14:20:38 +0000161 4.25. Q. How can I organize my code to make it easier to change the base
162 class?
163 4.26. Q. How can I find the methods or attributes of an object?
Guido van Rossum061f1821994-10-06 16:03:45 +0000164 4.27. Q. I can't seem to use os.read() on a pipe created with os.popen().
165 4.28. Q. How can I create a stand-alone binary from a Python script?
Guido van Rossum7be34a81995-05-31 15:17:12 +0000166 4.29. Q. What WWW tools are there for Python?
167 4.30. Q. How do I run a subprocess with pipes connected to both input
Guido van Rossum796b2591995-01-20 23:05:52 +0000168 and output?
Guido van Rossum7be34a81995-05-31 15:17:12 +0000169 4.31. Q. How do I call a function if I have the arguments in a tuple?
170 4.32. Q. How do I enable font-lock-mode for Python in Emacs?
171 4.33. Q. Is there an inverse to the format operator (a la C's scanf())?
Guido van Rossuma7925f11994-01-26 10:20:16 +0000172
173 5. Extending Python
174 5.1. Q. Can I create my own functions in C?
175 5.2. Q. Can I create my own functions in C++?
Guido van Rossum7ce61c11994-06-13 15:13:56 +0000176 5.3. Q. How can I execute arbitrary Python statements from C?
177 5.4. Q. How can I evaluate an arbitrary Python expression from C?
178 5.5. Q. How do I extract C values from a Python object?
179 5.6. Q. How do I use mkvalue() to create a tuple of arbitrary length?
Guido van Rossum796b2591995-01-20 23:05:52 +0000180 5.7. Q. What happened to mktuple(), featured in an example in the
Guido van Rossumb34e8aa1994-09-23 14:20:38 +0000181 Extensions manual?
182 5.8. Q. How do I call an object's method from C?
183 5.9. Q. How do I catch the output from print_error()?
184 5.10. Q. How do I access a module written in Python from C?
Guido van Rossumb0a2ce51995-08-28 19:41:35 +0000185 5.11. Q. How do I interface to C++ objects from Python?
Guido van Rossuma7925f11994-01-26 10:20:16 +0000186
187 6. Python's design
Guido van Rossumb0a2ce51995-08-28 19:41:35 +0000188 6.1. Q. Why isn't there a generic copying operation for objects in Python?
Guido van Rossuma7925f11994-01-26 10:20:16 +0000189 6.2. Q. Why isn't there a generic way to implement persistent objects
190 in Python? (Persistent == automatically saved to and restored from
191 disk.)
192 6.3. Q. Why isn't there a switch or case statement in Python?
Guido van Rossumc50158e1994-05-31 09:18:50 +0000193 6.4. Q. Why does Python use indentation for grouping of statements?
Guido van Rossum3de27361994-07-25 14:19:33 +0000194 6.5. Q. Why are Python strings immutable?
195 6.6. Q. Why don't strings have methods like index() or sort(), like
196 lists?
197 6.7. Q. Why does Python use methods for some functionality
198 (e.g. list.index()) but functions for other (e.g. len(list))?
199 6.8. Q. Why can't I derive a class from built-in types (e.g. lists or
200 files)?
201 6.9. Q. Why must 'self' be declared and used explicitly in method
202 definitions and calls?
Guido van Rossum061f1821994-10-06 16:03:45 +0000203 6.10. Q. Can't you emulate threads in the interpreter instead of
204 relying on an OS-specific thread implementation?
205 6.11. Q. Why can't lambda forms contain statements?
206 6.12. Q. Why is there no more efficient way of iterating over a dictionary
207 than first constructing the list of keys()?
Guido van Rossumb0a2ce51995-08-28 19:41:35 +0000208 6.13. Q. Can Python be compiled to machine code, C or some other language?
Guido van Rossum05151e01995-09-28 13:24:46 +0000209 6.14. Q. Why doesn't Python use proper garbage collection?
Guido van Rossuma7925f11994-01-26 10:20:16 +0000210
211 7. Using Python on non-UNIX platforms
Guido van Rossum91f60831994-02-15 15:52:27 +0000212 7.1. Q. Is there a Mac version of Python?
213 7.2. Q. Is there a DOS version of Python?
Guido van Rossume530c581995-04-10 12:32:16 +0000214 7.3. Q. Is there a Windows 3.1(1) version of Python?
Guido van Rossum91f60831994-02-15 15:52:27 +0000215 7.4. Q. Is there a Windows NT version of Python?
Guido van Rossume530c581995-04-10 12:32:16 +0000216 7.5. Q. Is there a Windows 95 version of Python?
217 7.6. Q. Is there an OS/2 version of Python?
218 7.7. Q. Is there a VMS version of Python?
Guido van Rossumbf8e7d51995-08-28 03:09:13 +0000219 7.8. Q. What about IBM mainframes, or other non-UNIX platforms?
Guido van Rossume530c581995-04-10 12:32:16 +0000220 7.9. Q. Where are the source or Makefiles for the non-UNIX versions?
221 7.10. Q. What is the status and support for the non-UNIX versions?
222 7.11. Q. I have a PC version but it appears to be only a binary.
Guido van Rossumb34e8aa1994-09-23 14:20:38 +0000223 Where's the library?
Guido van Rossume530c581995-04-10 12:32:16 +0000224 7.12. Q. Where's the documentation for the Mac or PC version?
225 7.13. Q. The Mac (PC) version doesn't seem to have any facilities for
Guido van Rossumb34e8aa1994-09-23 14:20:38 +0000226 creating or editing programs apart from entering it interactively, and
227 there seems to be no way to save code that was entered interactively.
228 How do I create a Python program on the Mac (PC)?
Guido van Rossuma7925f11994-01-26 10:20:16 +0000229
230To find a particular question, search for the question number followed
231by a dot, a space, and a Q at the beginning of a line (e.g. to find
232question 4.2 in vi, type /^4\.2\. Q/).
233
234
2351. General information and availability
Guido van Rossumb0a2ce51995-08-28 19:41:35 +0000236 =======================================
Guido van Rossuma7925f11994-01-26 10:20:16 +0000237
2381.1. Q. What is Python?
239
240A. Python is an interpreted, interactive, object-oriented programming
241language. It incorporates modules, exceptions, dynamic typing, very
242high level dynamic data types, and classes. Python combines
243remarkable power with very clear syntax. It has interfaces to many
244system calls and libraries, as well as to various window systems, and
245is extensible in C or C++. It is also usable as an extension language
246for applications that need a programmable interface. Finally, Python
Guido van Rossuma6c707c1995-01-02 17:32:28 +0000247is portable: it runs on many brands of UNIX, on the Mac, and on PCs
248under MS-DOS, Windows, Windows NT, and OS/2.
Guido van Rossuma7925f11994-01-26 10:20:16 +0000249
250To find out more, the best thing to do is to start reading the
251tutorial from the documentation set (see a few questions further
252down).
253
2541.2. Q. Why is it called Python?
255
Guido van Rossum796b2591995-01-20 23:05:52 +0000256A. Apart from being a computer scientist, I'm also a fan of "Monty
Guido van Rossuma7925f11994-01-26 10:20:16 +0000257Python's Flying Circus" (a BBC comedy series from the seventies, in
Guido van Rossum5333c5d1994-04-11 11:06:22 +0000258the -- unlikely -- case you didn't know). It occurred to me one day
259that I needed a name that was short, unique, and slightly mysterious.
260And I happened to be reading some scripts from the series at the
261time... So then I decided to call my language Python. But Python is
262not a joke. And don't you associate it with dangerous reptiles
Guido van Rossuma6c707c1995-01-02 17:32:28 +0000263either! (If you need an icon, use an image of the 16-ton weight from
264the TV series or of a can of SPAM :-)
Guido van Rossuma7925f11994-01-26 10:20:16 +0000265
2661.3. Q. How do I obtain a copy of the Python source?
267
Guido van Rossuma6c707c1995-01-02 17:32:28 +0000268A. The latest complete Python source distribution is always available
269by anonymous ftp, e.g.
Guido van Rossum7be34a81995-05-31 15:17:12 +0000270<URL:ftp://ftp.python.org/pub/python/src/python1.2.tar.gz>. It is a
Guido van Rossume530c581995-04-10 12:32:16 +0000271gzipped tar file containing the complete C source, LaTeX
272documentation, Python library modules, example programs, and several
273useful pieces of freely distributable software. This will compile and
274run out of the box on most UNIX platforms. (See section 7 for
275non-UNIX information.)
Guido van Rossuma6c707c1995-01-02 17:32:28 +0000276
277Occasionally a set of patches is issued which has to be applied using
278the patch program. These patches are placed in the same directory,
Guido van Rossum7be34a81995-05-31 15:17:12 +0000279e.g. <URL:ftp://ftp.python.org/pub/python/src/patch1.1.1>. (At the time
Guido van Rossume530c581995-04-10 12:32:16 +0000280of writing, no patches exist for 1.2.)
Guido van Rossuma6c707c1995-01-02 17:32:28 +0000281
282An index of said ftp directory can be found in the file INDEX. An
283HTML version of the index can be found in the file index.html,
Guido van Rossum7be34a81995-05-31 15:17:12 +0000284<URL:ftp://ftp.python.org/pub/python/index.html>.
Guido van Rossuma7925f11994-01-26 10:20:16 +0000285
2861.4. Q. How do I get documentation on Python?
287
Guido van Rossuma8a8d4a1995-03-10 16:19:31 +0000288A. The LaTeX source for the documentation is part of the source
289distribution. If you don't have LaTeX, the latest Python
290documentation set is always available by anonymous ftp, e.g.
Guido van Rossum7be34a81995-05-31 15:17:12 +0000291<URL:ftp://ftp.python.org/pub/python/doc/postscript.tar.gz>. It is a
Guido van Rossuma6c707c1995-01-02 17:32:28 +0000292gzipped tar file containing PostScript files of the reference manual,
Guido van Rossum3de27361994-07-25 14:19:33 +0000293the library manual, and the tutorial. Note that the library manual is
294the most important one of the set, as much of Python's power stems
295from the standard or built-in types, functions and modules, all of
296which are described here. PostScript for a high-level description of
Guido van Rossuma8a8d4a1995-03-10 16:19:31 +0000297Python is in the file nluug-paper.ps (a separate file on the ftp
298site).
Guido van Rossuma7925f11994-01-26 10:20:16 +0000299
Guido van Rossumc50158e1994-05-31 09:18:50 +00003001.5. Q. Are there other ftp sites that mirror the Python distribution?
301
Guido van Rossuma6c707c1995-01-02 17:32:28 +0000302A. The following anonymous ftp sites keep mirrors of the Python
303distribution:
Guido van Rossuma7925f11994-01-26 10:20:16 +0000304
Guido van Rossumb0a2ce51995-08-28 19:41:35 +0000305 <URL:ftp://ftp.cwi.nl/pub/python/>
Guido van Rossuma6c707c1995-01-02 17:32:28 +0000306 <URL:ftp://gatekeeper.dec.com/pub/plan/python/>
Guido van Rossuma6c707c1995-01-02 17:32:28 +0000307 <URL:ftp://ftp.wustl.edu/graphics/graphics/sgi-stuff/python/>
Guido van Rossum05151e01995-09-28 13:24:46 +0000308 <URL:ftp://ftp.uu.net/languages/python/>
Guido van Rossuma6c707c1995-01-02 17:32:28 +0000309 <URL:ftp://ftp.funet.fi/pub/languages/python/>
310 <URL:ftp://ftp.sunet.se/pub/lang/python/>
Guido van Rossum3fc9d731995-07-25 15:10:56 +0000311 <URL:ftp://unix.hensa.ac.uk/mirrors/uunet/languages/python/>
312 <URL:ftp://ftp.sterling.com/programming/languages/python/>
Guido van Rossum05151e01995-09-28 13:24:46 +0000313 <URL:ftp://uiarchive.cso.uiuc.edu/pub/lang/python/>
Guido van Rossumb0a2ce51995-08-28 19:41:35 +0000314 <URL:ftp://ftp.ibp.fr/pub/python/>
Guido van Rossum3fc9d731995-07-25 15:10:56 +0000315 <URL:ftp://ftp.switch.ch/software/sources/python/>
316 <URL:ftp://ftp.informatik.tu-muenchen.de/pub/comp/programming/languages/python/>
Guido van Rossuma7925f11994-01-26 10:20:16 +0000317
Guido van Rossuma6c707c1995-01-02 17:32:28 +0000318Or try archie on the string "python".
Guido van Rossuma7925f11994-01-26 10:20:16 +0000319
Guido van Rossumc50158e1994-05-31 09:18:50 +00003201.6. Q. Is there a newsgroup or mailing list devoted to Python?
Guido van Rossuma7925f11994-01-26 10:20:16 +0000321
Guido van Rossuma6c707c1995-01-02 17:32:28 +0000322A. There is a newsgroup, comp.lang.python <URL:news:comp.lang.python>,
323and a mailing list. The newsgroup and mailing list are gatewayed into
324each other -- if you can read news it's unnecessary to subscribe to
325the mailing list. Send e-mail to <python-list-request@cwi.nl> to
Guido van Rossume530c581995-04-10 12:32:16 +0000326(un)subscribe to the mailing list. Hypermail archives of (nearly)
327everything posted to the mailing list (and thus the newsgroup) are
328available on our WWW server,
Guido van Rossuma6c707c1995-01-02 17:32:28 +0000329<URL:http://www.cwi.nl/~guido/hypermail/index.html>. The raw archives
330are also available by ftp, e.g.
Guido van Rossum7be34a81995-05-31 15:17:12 +0000331<URL:ftp://ftp.python.org/pub/python/mail/mailinglist.gz>. The
Guido van Rossume530c581995-04-10 12:32:16 +0000332uncompressed versions of these files can be read with the standard
333UNIX Mail program ("Mail -f file") or with nn ("nn file"). To read
Guido van Rossumbf8e7d51995-08-28 03:09:13 +0000334them using MH, you could use "inc -file file". (The archival service
335has stopped archiving new articles around the end of April 1995. I
336hope to revive it on the PSA server www.python.org sometime in the
337future.)
Guido van Rossuma7925f11994-01-26 10:20:16 +0000338
Guido van Rossuma6c707c1995-01-02 17:32:28 +00003391.7. Q. Is there a WWW page devoted to Python?
340
Guido van Rossum7be34a81995-05-31 15:17:12 +0000341A. Yes, <URL:http://www.python.org/> is the official Python home page.
342At the time of writing, this page is not yet completely operational;
343you may have a look at the old Python home page:
344<URL:http://www.cwi.nl/~guido/Python.html> or at the U.S. copy:
345<URL:http://www.python.org/~guido/Python.html>.
Guido van Rossuma6c707c1995-01-02 17:32:28 +0000346
Guido van Rossuma8a8d4a1995-03-10 16:19:31 +00003471.8. Q. Is the Python documentation available on the WWW?
Guido van Rossuma7925f11994-01-26 10:20:16 +0000348
Guido van Rossum7be34a81995-05-31 15:17:12 +0000349A. Yes, see <URL:http://www.python.org/> (Python's home page). It
350contains pointers to hypertext versions of the whole documentation set
351(as hypertext, not just PostScript).
Guido van Rossuma7925f11994-01-26 10:20:16 +0000352
Guido van Rossuma8a8d4a1995-03-10 16:19:31 +0000353If you wish to browse this collection of HTML files on your own
354machine, it is available bundled up by anonymous ftp,
Guido van Rossum7be34a81995-05-31 15:17:12 +0000355e.g. <URL:ftp://ftp.python.org/pub/python/doc/html.tar.gz>.
Guido van Rossuma8a8d4a1995-03-10 16:19:31 +0000356
357An Emacs-INFO set containing the library manual is also available by
Guido van Rossum7be34a81995-05-31 15:17:12 +0000358ftp, e.g. <URL:ftp://ftp.python.org/pub/python/doc/lib-info.tar.gz>.
Guido van Rossuma8a8d4a1995-03-10 16:19:31 +0000359
3601.9. Q. Is there a book on Python, or will there be one out soon?
361
Guido van Rossum3fc9d731995-07-25 15:10:56 +0000362A. Mark Lutz is writing a Python book for O'Reilly and Associates, to
363be published early 1996. See the outline (in PostScript):
364<URL:http://www.python.org/workshops/1995-05/outlinep.eps>.
Guido van Rossuma8a8d4a1995-03-10 16:19:31 +0000365
3661.10. Q. Are there any published articles about Python that I can quote?
Guido van Rossuma7925f11994-01-26 10:20:16 +0000367
368A. So far the only refereed and published article that describes
369Python in some detail is:
370
371 Guido van Rossum and Jelke de Boer, "Interactively Testing Remote
372 Servers Using the Python Programming Language", CWI Quarterly, Volume
373 4, Issue 4 (December 1991), Amsterdam, pp 283-303.
374
375LaTeX source for this paper is available as part of the Python source
376distribution.
377
Guido van Rossum05151e01995-09-28 13:24:46 +0000378See also the next section (supposedly Aaron Watters' paper has been
379refereed).
380
Guido van Rossuma8a8d4a1995-03-10 16:19:31 +00003811.11. Q. Are there short introductory papers or talks on Python?
Guido van Rossuma6c707c1995-01-02 17:32:28 +0000382
Guido van Rossum05151e01995-09-28 13:24:46 +0000383A. A recent, very entertaining introduction to Python is the tutorial by
384Aaron Watters in UnixWorld Online:
385
386 Aaron R. Watters: "The What, Why, Who, and Where of Python",
387 <URL:http://www.wcmh.com/uworld/archives/95/tutorial/005.html>
388
389An olded paper is:
Guido van Rossuma7925f11994-01-26 10:20:16 +0000390
391 Guido van Rossum, "An Introduction to Python for UNIX/C
392 Programmers", in the proceedings of the NLUUG najaarsconferentie
Guido van Rossum061f1821994-10-06 16:03:45 +0000393 1993 (dutch UNIX users group meeting November 1993).
Guido van Rossuma7925f11994-01-26 10:20:16 +0000394
Guido van Rossuma6c707c1995-01-02 17:32:28 +0000395PostScript for this paper and for the slides used for the accompanying
396presentation is available by ftp as
Guido van Rossum7be34a81995-05-31 15:17:12 +0000397<URL:ftp://ftp.python.org/pub/python/doc/nluug-paper.ps> and
398<URL:ftp://ftp.python.org/pub/python/doc/nluug-slides.ps>, respectively.
Guido van Rossuma6c707c1995-01-02 17:32:28 +0000399
400Slides for a talk on Python that I gave at the Usenix Symposium on
Guido van Rossum05151e01995-09-28 13:24:46 +0000401Very High Level Languages in Santa Fe, NM, USA in October 1994 are
Guido van Rossum7be34a81995-05-31 15:17:12 +0000402available as <URL:ftp://ftp.python.org/pub/python/doc/vhll-slides.ps>.
Guido van Rossuma6c707c1995-01-02 17:32:28 +0000403
Guido van Rossuma8a8d4a1995-03-10 16:19:31 +00004041.12. Q. How does the Python version numbering scheme work?
Guido van Rossum95f61a71994-01-26 17:23:37 +0000405
Guido van Rossum05151e01995-09-28 13:24:46 +0000406A. Python versions are numbered A.B.C or A.B. A is the major version
407number -- it is only incremented for major changes in functionality or
408source structure. B is the minor version number, incremented for less
Guido van Rossum95f61a71994-01-26 17:23:37 +0000409earth-shattering changes to a release. C is the patchlevel -- it is
Guido van Rossum05151e01995-09-28 13:24:46 +0000410incremented for each new patch release. Not all releases have patch
411releases. Note that in the past, patches have added significant
412changes; in fact the changeover from 0.9.9 to 1.0.0 was the first time
413that either A or B changed!
Guido van Rossum95f61a71994-01-26 17:23:37 +0000414
Guido van Rossuma8a8d4a1995-03-10 16:19:31 +0000415Beta versions have an additional suffix of "-beta-N" for some small
416number N. Note that (for instance) all versions labeled 1.2-beta-N
Guido van Rossum05151e01995-09-28 13:24:46 +0000417*precede* the actual release of 1.2. 1.3b1 is short for 1.3-beta-1.
Guido van Rossuma8a8d4a1995-03-10 16:19:31 +0000418
4191.13. Q. How do I get a beta test version of Python?
420
Guido van Rossum05151e01995-09-28 13:24:46 +0000421A. If there are any beta releases, they are published in the normal
422source directory (e.g. <URL:ftp://ftp.python.org/pub/python/src/>).
Guido van Rossuma8a8d4a1995-03-10 16:19:31 +0000423
Guido van Rossum05151e01995-09-28 13:24:46 +00004241.14. Q. Are there copyright restrictions on the use of Python?
Guido van Rossum7ce61c11994-06-13 15:13:56 +0000425
426A. Hardly. You can do anything you want with the source, as long as
Guido van Rossuma6c707c1995-01-02 17:32:28 +0000427you leave the copyrights in, and display those copyrights in any
428documentation about Python that you produce. Also, don't use the
429author's institute's name in publicity without prior written
430permission, and don't hold them responsible for anything (read the
431actual copyright for a precise legal wording).
432
433In particular, if you honor the copyright rules, it's OK to use Python
434for commercial use, to sell copies of Python in source or binary form,
435or to sell products that enhance Python or incorporate Python (or part
436of it) in some form. I would still like to know about all commercial
437use of Python!
Guido van Rossum5333c5d1994-04-11 11:06:22 +0000438
Guido van Rossum05151e01995-09-28 13:24:46 +00004391.15. Q. Why was Python created in the first place?
Guido van Rossum7be34a81995-05-31 15:17:12 +0000440
441A. Here's a *very* brief summary of what got me started:
442
443- I had extensive experience with implementing an interpreted language
444in the ABC group at CWI, and from working with this group I had
445learned a lot about language design. This is the origin of many
446Python features, including the use of indentation for statement
447grouping and the inclusion of very-high-level data types (although the
448details are all different in Python).
449
450- I had a number of gripes about the ABC language, but also liked many
451of its features. It was impossible to extend the ABC language (or its
452implementation) to remedy my complaints -- in fact its lack of
453extensibility was one of its biggest problems.
454
455- I had some experience with using Modula-2+ and talked with the
456designers of Modula-3 (and read the M3 report). M3 is the origin of
457the syntax and semantics used for exceptions, and some other Python
458features.
459
460- I was working in the Amoeba distributed operating system group at
461CWI. We needed a better way to do system administration than by
462writing either C programs or Bourne shell scripts, since Amoeba had
463its own system call interface which wasn't easily accessible from the
Guido van Rossumbf8e7d51995-08-28 03:09:13 +0000464Bourne shell. My experience with error handling in Amoeba made me
465acutely aware of the importance of exceptions as a programming
466language feature.
Guido van Rossum7be34a81995-05-31 15:17:12 +0000467
468- It occurred to me that a scripting language with a syntax like ABC
469but with access to the Amoeba system calls would fill the need. I
470realized that it would be foolish to write an Amoeba-specific
471language, so I decided that I needed a language that was generally
472extensible.
473
474- During the 1989 Christmas holidays, I had a lot of time on my hand,
475so I decided to give it a try. During the next year, while still
476mostly working on it in my own time, Python was used in the Amoeba
477project with increasing success, and the feedback from colleagues made
478me add many early improvements.
479
480- In February 1991, after just over a year of development, I decided
481to post to USENET. The rest is in the Misc/HISTORY file.
482
Guido van Rossum05151e01995-09-28 13:24:46 +00004831.16. Q. What happened to Tim Peters (the author of python-mode.el, and many
Guido van Rossum7be34a81995-05-31 15:17:12 +0000484entertaining and enlightening pieces of Python email)?
485
486A. He worked at KSR (Kendall Square Research, a start-up building a
487new kind of massively parallel processor). When KSR folded down a
488couple of years ago, Tim lost his email access. He hasn't surfaced
489on the net since then.
490
491 Missing-him-too-ly yours...
492
Guido van Rossumb0a2ce51995-08-28 19:41:35 +0000493PS: support for Python's Emacs mode (Misc/python-mode.el in the
494distribution) has been taken up by Barry Warsaw. Questions about it
495should be mailed to <python-mode@python.org>.
496
Guido van Rossuma7925f11994-01-26 10:20:16 +0000497
4982. Python in the real world
499===========================
500
5012.1. Q. How many people are using Python?
502
Guido van Rossum5333c5d1994-04-11 11:06:22 +0000503A. I don't know, but the maximum number of simultaneous subscriptions
504to the Python mailing list before it was gatewayed into the newsgroup
505was about 180 (several of which were local redistribution lists). I
506believe that many active Python users don't bother to subscribe to the
507list, and now that there's a newsgroup the mailing list subscription
Guido van Rossum7ce61c11994-06-13 15:13:56 +0000508is even less meaningful. I see new names on the newsgroup all the
509time and my best guess is that there are currently at least several
510thousands of users.
Guido van Rossuma7925f11994-01-26 10:20:16 +0000511
Guido van Rossumb0a2ce51995-08-28 19:41:35 +0000512Another statistic is the number of accesses to the Python WWW server.
513Have a look at <URL:http://www.python.org/stats/>.
514
Guido van Rossuma7925f11994-01-26 10:20:16 +00005152.2. Q. Have any significant projects been done in Python?
516
517A. Here at CWI (the home of Python), we have written a 20,000 line
518authoring environment for transportable hypermedia presentations, a
Guido van Rossum5333c5d1994-04-11 11:06:22 +00005195,000 line multimedia teleconferencing tool, as well as many many
520smaller programs.
Guido van Rossuma7925f11994-01-26 10:20:16 +0000521
522The University of Virginia uses Python to control a virtual reality
523engine. Contact: Matt Conway <conway@virginia.edu>.
524
Guido van Rossuma6c707c1995-01-02 17:32:28 +0000525The ILU project at Xerox PARC can generate Python glue for ILU
526interfaces. See <URL:ftp://ftp.parc.xerox.com/pub/ilu/ilu.html>.
527
Guido van Rossumac3f2121995-04-10 11:53:42 +0000528The University of California, Irvine uses a student administration
529system called TELE-Vision written entirely in Python. Contact: Ray
530Price <rlprice@uci.edu>.
531
Guido van Rossumb0a2ce51995-08-28 19:41:35 +0000532See also the next question.
533
Guido van Rossumb34e8aa1994-09-23 14:20:38 +0000534If you have done a significant project in Python that you'd like to be
535included in the list above, send me email!
Guido van Rossuma7925f11994-01-26 10:20:16 +0000536
5372.3. Q. Are there any commercial projects going on using Python?
538
539A. Several companies have revealed to me that they are planning or
Guido van Rossum796b2591995-01-20 23:05:52 +0000540considering use of Python in a future product.
Guido van Rossumb34e8aa1994-09-23 14:20:38 +0000541
Guido van Rossumbf8e7d51995-08-28 03:09:13 +0000542Sunrise Software has a product out using Python -- they use Python
Guido van Rossumac3f2121995-04-10 11:53:42 +0000543for a GUI management application and an SNMP network management
544application. Contact: <info@sunrise.com>.
Guido van Rossuma7925f11994-01-26 10:20:16 +0000545
Guido van Rossuma6c707c1995-01-02 17:32:28 +0000546Infoseek uses Python to implement their commercial WWW information
547retrieval service <URL:http://www.infoseek.com/>. Contact:
548<info@infoseek.com>.
Guido van Rossumf8c76d01994-08-17 12:19:53 +0000549
Guido van Rossumb34e8aa1994-09-23 14:20:38 +0000550Michael Powers of daVinci Time & Space is "writing tons-o-python for
551interactive television entertainment." Contact: <powers@dvts.com>.
552
Guido van Rossuma6c707c1995-01-02 17:32:28 +0000553Paul Everitt of Connecting Minds is planning a Lotus Notes gateway.
554Contact: <Paul.Everitt@cminds.com>. Or see their WWW server
555<URL:http://www.cminds.com/>.
556
Guido van Rossumac3f2121995-04-10 11:53:42 +0000557KaPRE in Boulder, CO is using Python for on-site customization of C++
558applications, rapid-prototyping/development,
559language-based-components, and possibly more. This is pretty solid:
560Python's being shipped with their tool-set now, to beta sites.
561Contact: <lutz@KaPRE.COM> (Mark Lutz).
562
563Individuals at many other companies are using Python for internal
564development or for as yet unannounced products (witness their
565contributions to the Python mailing list or newsgroup).
Guido van Rossuma7925f11994-01-26 10:20:16 +0000566
Guido van Rossumb0a2ce51995-08-28 19:41:35 +0000567SGI has advertised in the Python list looking for Python programmers
568for a project involving interactive television.
569
570See also the workshop minutes at
571<URL:http://www.python.org/workshops/> -- in general the WWW server is
572more up to date than the FAQ for these issues.
573
Guido van Rossuma7925f11994-01-26 10:20:16 +0000574Python has also been elected as an extension language by MADE, a
575consortium supported by the European Committee's ESPRIT program and
576consisting of Bull, CWI and some other European companies. Contact:
577Ivan Herman <ivan@cwi.nl>.
578
Guido van Rossumb34e8aa1994-09-23 14:20:38 +0000579If you'd like to be included in the list above, send me email!
580
Guido van Rossum95f61a71994-01-26 17:23:37 +00005812.4. Q. How stable is Python?
Guido van Rossuma7925f11994-01-26 10:20:16 +0000582
Guido van Rossum3de27361994-07-25 14:19:33 +0000583A. Very stable. While the current version number would suggest it is
584in the early stages of development, in fact new, stable releases
Guido van Rossumbf8e7d51995-08-28 03:09:13 +0000585(numbered 0.9.x through 1.2) have been coming out roughly every 3 to
Guido van Rossuma6c707c1995-01-02 17:32:28 +00005866 months for the past four years.
Guido van Rossuma7925f11994-01-26 10:20:16 +0000587
Guido van Rossumb34e8aa1994-09-23 14:20:38 +00005882.5. Q. When will the next version be released?
589
Guido van Rossumb0a2ce51995-08-28 19:41:35 +0000590A. I am planning to release 1.3 in early October 1995. It will
591contain keyword parameters as the most important new language feature.
592A beta version was made available in August, more beta versions may
593appear.
Guido van Rossumb34e8aa1994-09-23 14:20:38 +0000594
5952.6. Q. What new developments are expected for Python in the future?
Guido van Rossuma7925f11994-01-26 10:20:16 +0000596
Guido van Rossum7be34a81995-05-31 15:17:12 +0000597A. See my Work-In-Progress web page, currently at
598<URL:http://www.python.org:~guido/WIP.html>, and the pages for the
599Second Python Workshop (best reached via the Python home page,
Guido van Rossumb0a2ce51995-08-28 19:41:35 +0000600<URL:http://www.python.org/>). Also follow the newsgroup discussions!
Guido van Rossuma6c707c1995-01-02 17:32:28 +0000601
Guido van Rossumb34e8aa1994-09-23 14:20:38 +00006022.7. Q. Is it reasonable to propose incompatible changes to Python?
Guido van Rossum3de27361994-07-25 14:19:33 +0000603
604A. In general, no. There are already millions of lines of Python code
605around the world, so any changes in the language that invalidates more
606than a very small fraction of existing programs has to be frowned
607upon. Even if you can provide a conversion program, there still is
608the problem of updating all documentation. Providing a gradual
609upgrade path is the only way if a feature has to be changed.
610
Guido van Rossumb0a2ce51995-08-28 19:41:35 +00006112.8. Q. What is the future of Python?
Guido van Rossuma7925f11994-01-26 10:20:16 +0000612
Guido van Rossumb0a2ce51995-08-28 19:41:35 +0000613A. If I knew, I'd be rich :-)
614
615Seriously, the formation of the PSA (Pyton Software Activity, see
616<URL:http://www.python.org/psa/>) ensures some kind of support even in
617the (unlikely! event that I'd be hit by a bus (actually, here in the
618US, a car accident would be more likely :-), were to join a nunnery,
619or would be head-hunted. A large number of Python users have become
620experts at Python programming as well as maintenance of the
621implementation, and would easily fill the vacuum created by my
622disappearance.
623
624In the mean time, I have no plans to disappear -- rather, I am
625committed to improving Python, and my current benefactor, CNRI (see
626<URL:http://www.cnri.reston.va.us>) is just as committed to continue
627its support of Python and the PSA. In fact, we have great plans for
628Python -- we just can't tell yet!
629
Guido van Rossum05151e01995-09-28 13:24:46 +00006302.9. Q. What is the PSA, anyway?
631
632A. The Python Software Activity <URL:http://www.python.org/psa/> was
633created by a number of Python aficionados who want Python to be more
634than the product and responsibility of a single individual. It has
635found a home at CNRI <URL:http://www.cnri.reston.va.us>. Anybody who
636wishes Python well should join the PSA.
637
6382.10. Q. How do I join the PSA?
639
640A. The full scoop is available on the web, see
641<URL:http://www.python.org/psa/Joining.html>. Summary: send a check
642of at least $50 to CNRI/PSA, 1895 Preston White Drive, Suite 100, in
643Reston, VA 22091. Full-time students pay $25. Companies can join for
644a mere $500.
645
6462.11. Q. What are the benefits of joining the PSA?
647
648A. Like National Public Radio, if not enough people join, Python will
649wither. Your name will be mentioned on the PSA's web server.
650Workshops organized by the PSA <URL:http://www.python.org/workshops/>
651are only accessible to PSA members (you can join at the door). The
652PSA is working on additional benefits, such as reduced prices for
653books and software, and early access to beta versions of Python.
654
Guido van Rossumb0a2ce51995-08-28 19:41:35 +0000655
6563. Building Python and Other Known Bugs
657=======================================
Guido van Rossuma7925f11994-01-26 10:20:16 +0000658
Guido van Rossum91f60831994-02-15 15:52:27 +00006593.1. Q. Is there a test set?
Guido van Rossuma7925f11994-01-26 10:20:16 +0000660
661A. Yes, simply do "import testall" (or "import autotest" if you aren't
662interested in the output). The standard modules whose name begins
663with "test" together comprise the test. The test set doesn't test
664*all* features of Python but it goes a long way to confirm that a new
665port is actually working. The Makefile contains an entry "make test"
Guido van Rossuma6c707c1995-01-02 17:32:28 +0000666which runs the autotest module. NOTE: if "make test" fails, run the
667tests manually ("import testall") to see what goes wrong before
668reporting the error.
Guido van Rossuma7925f11994-01-26 10:20:16 +0000669
Guido van Rossum91f60831994-02-15 15:52:27 +00006703.2. Q. When running the test set, I get complaints about floating point
Guido van Rossuma7925f11994-01-26 10:20:16 +0000671operations, but when playing with floating point operations I cannot
672find anything wrong with them.
673
674A. The test set makes occasional unwarranted assumptions about the
675semantics of C floating point operations. Until someone donates a
676better floating point test set, you will have to comment out the
677offending floating point tests and execute similar tests manually.
678
Guido van Rossum7be34a81995-05-31 15:17:12 +00006793.3. Q. Link errors after rerunning the configure script.
Guido van Rossum24349991994-02-02 14:12:45 +0000680
681A. It is generally necessary to run "make clean" after a configuration
682change.
683
Guido van Rossum7be34a81995-05-31 15:17:12 +00006843.4. Q. The python interpreter complains about options passed to a
Guido van Rossum24349991994-02-02 14:12:45 +0000685script (after the script name).
686
687A. You are probably linking with GNU getopt, e.g. through -liberty.
Guido van Rossumf8c76d01994-08-17 12:19:53 +0000688Don't. The reason for the complaint is that GNU getopt, unlike System
689V getopt and other getopt implementations, doesn't consider a
690non-option to be the end of the option list. A quick (and compatible)
691fix for scripts is to add "--" to the interpreter, like this:
692
Guido van Rossuma6c707c1995-01-02 17:32:28 +0000693 #! /usr/local/bin/python --
Guido van Rossumf8c76d01994-08-17 12:19:53 +0000694
695You can also use this interactively:
696
Guido van Rossuma6c707c1995-01-02 17:32:28 +0000697 python -- script.py [options]
698
699Note that a working getopt implementation is provided in the Python
700distribution (in Python/getopt.c) but not automatically used.
Guido van Rossum24349991994-02-02 14:12:45 +0000701
Guido van Rossum7be34a81995-05-31 15:17:12 +00007023.5. Q. When building on the SGI, make tries to run python to create
Guido van Rossum24349991994-02-02 14:12:45 +0000703glmodule.c, but python hasn't been built or installed yet.
704
705A. Comment out the line mentioning glmodule.c in Setup and build a
706python without gl first; install it or make sure it is in your $PATH,
707then edit the Setup file again to turn on the gl module, and make
708again. You don't need to do "make clean"; you do need to run "make
709Makefile" in the Modules subdirectory (or just run "make" at the
710toplevel).
711
Guido van Rossum7be34a81995-05-31 15:17:12 +00007123.6. Q. Python built with gcc for the DEC Alpha doesn't work.
Guido van Rossum3de27361994-07-25 14:19:33 +0000713
Guido van Rossuma8a8d4a1995-03-10 16:19:31 +0000714People have reported problems with gcc 2.5.8 up to 2.6.3. The DEC
715OSF/1 cc compiler does not have these problems so it's likely a gcc
Guido van Rossume530c581995-04-10 12:32:16 +0000716bug. The latest news is that this has been fixed in Python 1.2 by a
717source change (I gave up waiting for a fixed gcc).
Guido van Rossum3de27361994-07-25 14:19:33 +0000718
Guido van Rossum7be34a81995-05-31 15:17:12 +00007193.7. Q. I use VPATH but some targets are built in the source directory.
Guido van Rossumb34e8aa1994-09-23 14:20:38 +0000720
721A. On some systems (e.g. Sun), if the target already exists in the
722source directory, it is created there instead of in the build
723directory. This is usually because you have previously built without
724VPATH. Try running "make clobber" in the source directory.
725
Guido van Rossum7be34a81995-05-31 15:17:12 +00007263.8. Q. Trouble building or linking with the GNU readline library.
Guido van Rossumb34e8aa1994-09-23 14:20:38 +0000727
Guido van Rossumac3f2121995-04-10 11:53:42 +0000728A. Consider using readline 2.0. Some hints:
Guido van Rossumb34e8aa1994-09-23 14:20:38 +0000729
730- You can use the GNU readline library to improve the interactive user
731interface: this gives you line editing and command history when
Guido van Rossum796b2591995-01-20 23:05:52 +0000732calling python interactively. You need to configure and build the GNU
Guido van Rossumb34e8aa1994-09-23 14:20:38 +0000733readline library before running the configure script. Its sources are
734no longer distributed with Python; you can ftp them from any GNU
Guido van Rossuma6c707c1995-01-02 17:32:28 +0000735mirror site, or from its home site
736<URL:ftp://slc2.ins.cwru.edu/pub/dist/readline-2.0.tar.gz> (or a
737higher version number -- using version 1.x is not recommended). Pass
738the Python configure script the option --with-readline=DIRECTORY where
Guido van Rossumb34e8aa1994-09-23 14:20:38 +0000739DIRECTORY is the absolute pathname of the directory where you've built
740the readline library. Some hints on building and using the readline
741library:
742
743- On SGI IRIX 5, you may have to add the following
744to rldefs.h:
745
Guido van Rossuma6c707c1995-01-02 17:32:28 +0000746 #ifndef sigmask
747 #define sigmask(sig) (1L << ((sig)-1))
748 #endif
Guido van Rossumb34e8aa1994-09-23 14:20:38 +0000749
750- On most systems, you will have to add #include "rldefs.h" to the
751top of several source files, and if you use the VPATH feature, you
752will have to add dependencies of the form foo.o: foo.c to the
753Makefile for several values of foo.
754
755- The readline library requires use of the termcap library. A
756known problem with this is that it contains entry points which
Guido van Rossum061f1821994-10-06 16:03:45 +0000757cause conflicts with the STDWIN and SGI GL libraries. The STDWIN
Guido van Rossumb34e8aa1994-09-23 14:20:38 +0000758conflict can be solved (and will be, in the next release of
Guido van Rossum061f1821994-10-06 16:03:45 +0000759STDWIN) by adding a line saying '#define werase w_erase' to the
760stdwin.h file (in the STDWIN distribution, subdirectory H). The
Guido van Rossumb34e8aa1994-09-23 14:20:38 +0000761GL conflict has been solved in the Python configure script by a
762hack that forces use of the static version of the termcap library.
763
Guido van Rossumac3f2121995-04-10 11:53:42 +0000764- Check the newsgroup gnu.bash.bug <URL:news:gnu.bash.bug> for
765specific problems with the readline library (I don't read this group
766but I've been told that it is the place for readline bugs).
Guido van Rossumb34e8aa1994-09-23 14:20:38 +0000767
Guido van Rossum7be34a81995-05-31 15:17:12 +00007683.9. Q. Trouble building Python on Linux.
Guido van Rossumb34e8aa1994-09-23 14:20:38 +0000769
Guido van Rossumac3f2121995-04-10 11:53:42 +0000770A. If you're building Python 1.2, Slackware 2.2 has a buggy bash
771(version 1.14.3) which breaks a sed script that is used to build
772Modules/Makefile. Replace /bin/sh with /bin/ash in both makesetup and
773Makefile.pre.in.
774
775In 1.1 and 1.1.1, there's a bug in the reference counting logic of
Guido van Rossuma8a8d4a1995-03-10 16:19:31 +0000776ternary pow() which is only tripped by very picky mallocs, like the
777GNU malloc on Linux. This has been fixed in 1.2. To continue the
Guido van Rossumac3f2121995-04-10 11:53:42 +0000778tests in 1.1(.1), just disable the tests of pow() with three arguments
779from Lib/test/test_b2.py.
Guido van Rossuma6c707c1995-01-02 17:32:28 +0000780
Guido van Rossumac3f2121995-04-10 11:53:42 +0000781Apart from this, Python builds and runs fine on most Linux versions
782(if you run into trouble on an old Linux version, consider upgrading).
Guido van Rossumb34e8aa1994-09-23 14:20:38 +0000783
Guido van Rossum7be34a81995-05-31 15:17:12 +00007843.10. Q. Trouble with prototypes on Ultrix.
Guido van Rossum72eb83c1994-10-07 11:33:28 +0000785
786A. Ultrix cc seems broken -- use gcc, or edit config.h to #undef
787HAVE_PROTOTYPES.
788
Guido van Rossum7be34a81995-05-31 15:17:12 +00007893.11. Q. Trouble with posix.listdir on NeXTSTEP 3.2.
Guido van Rossum9351fdb1994-11-10 23:03:51 +0000790
Guido van Rossum3fc9d731995-07-25 15:10:56 +0000791A. (This often manifests itself as a weird error from the
792compileall.py script run by "make libinstall".)
Guido van Rossum9351fdb1994-11-10 23:03:51 +0000793
Guido van Rossum3fc9d731995-07-25 15:10:56 +0000794Don't use gcc, use the Next C compiler (cc). Even though it is
795derived from (an old version of) gcc, its interpretation of the
796"-posix" switch is different; in this particular case, cc is right and
797gcc is wrong.
Guido van Rossum9351fdb1994-11-10 23:03:51 +0000798
Guido van Rossum7be34a81995-05-31 15:17:12 +00007993.12. Q. Other trouble building Python on platform X.
Guido van Rossum95f61a71994-01-26 17:23:37 +0000800
Guido van Rossum796b2591995-01-20 23:05:52 +0000801A. Please email the details to <guido@cwi.nl> and I'll look into it.
802Please provide as many details as possible. In particular, if you
803don't tell me what type of computer and what operating system (and
804version) you are using it will be difficult for me to figure out what
805is the matter. If you get a specific error message, please email it
806to me too.
Guido van Rossuma7925f11994-01-26 10:20:16 +0000807
Guido van Rossum7be34a81995-05-31 15:17:12 +00008083.13. Q. How to configure dynamic loading on Lixux.
Guido van Rossum07779351995-02-07 16:59:56 +0000809
Guido van Rossum3fc9d731995-07-25 15:10:56 +0000810A. There are two answers, depending on whether you are using the new
811ELF object format or not.
Guido van Rossum07779351995-02-07 16:59:56 +0000812
Guido van Rossum3fc9d731995-07-25 15:10:56 +0000813For ELF, this seems to be the procedure (thanks to Martin von Loewis):
Guido van Rossum07779351995-02-07 16:59:56 +0000814
Guido van Rossum3fc9d731995-07-25 15:10:56 +0000815Compile Python to an ELF binary.
Guido van Rossuma8a8d4a1995-03-10 16:19:31 +0000816
Guido van Rossum3fc9d731995-07-25 15:10:56 +0000817In addition, you have to use the following flags:
Guido van Rossum07779351995-02-07 16:59:56 +0000818
Guido van Rossum3fc9d731995-07-25 15:10:56 +0000819 - when linking python: -rdynamic -ldl
820 - when compiling an object that goes into a shared module: -fPIC
821 - when linking a shared module: -shared -ldl
Guido van Rossum07779351995-02-07 16:59:56 +0000822
Guido van Rossum3fc9d731995-07-25 15:10:56 +0000823Furthermore, it appears that some Python releases did not understand
824that Linux has dynamic linking. Python 1.2 did it right, but you
825should check wether the generated config.h indicates the use of -ldl
826(i.e. dlopen, dlsym). Finally, you can load a shared module by saying
827'use foo'. Make sure the module is in your PYTHONPATH.
Guido van Rossum07779351995-02-07 16:59:56 +0000828
Guido van Rossum3fc9d731995-07-25 15:10:56 +0000829For pre-ELF systems (thanks to Andrew Kuchling):
Guido van Rossum07779351995-02-07 16:59:56 +0000830
Guido van Rossum3fc9d731995-07-25 15:10:56 +0000831Pre-ELF Linux requires that you use the GNU DLD library. The stages
832of using dynamic libraries on Linux are:
833
834 1) Get dld 3.2.5 from a Linux site. Be careful here; the most
835 recent GNU version is 3.2.3, and doesn't support Linux; be sure to
836 get it from a Linux mirror, not a GNU mirror (3.2.4 should also
837 work). Compile it and install the library libdld.a somewhere; I
838 used /usr/local/lib.
839
840 Suitable URLs for the dld distribution are currently:
841 <URL:ftp://sunsite.unc.edu/pub/Linux/libs/dld-3.2.5.src.tar.gz> and
842 <URL:ftp://tsx-11.mit.edu/pub/linux/sources/libs/dld-3.2.5.src.tar.gz>.
843 There's also a binary distribution of it:
844 <URL:ftp://sunsite.unc.edu/pub/Linux/libs/dld-3.2.5.bin.tar.gz>.
845
846 2) Get Jack Jansen's DL library; its location is given in the
847 _Extending Python_ manual as <URL:ftp://ftp.cwi.nl/pub/dynload/>.
848 Compile it and install libdl.a wherever you put libdld.a.
849
850 3) Run Python's configure script, giving it the --with-dl-dld option,
851 which requires a parameter giving the directory where you put the
852 libraries.
853
854 4) Recompile Python.
855
8563.14. Q. Under Solaris 2.x, using GCC, how do I use shared libraries?
857
858A. Use the linker in /usr/ucb/ld, not the GNU linker. The latter
859cannot create shared libraries.
860
8613.15. Q. Errors when linking with a shared library containing C++ code.
862
863A. Link the main Python binary with C++. Change the definition of
864LINKCC in Modules/Makefile to be your C++ compiler. You may have to
865edit config.c slightly to make it compilable with C++.
Guido van Rossum07779351995-02-07 16:59:56 +0000866
Guido van Rossum05151e01995-09-28 13:24:46 +00008673.16. Q. Tk menus or radiobuttons don't work properly in Python 1.2.
Guido van Rossumb0a2ce51995-08-28 19:41:35 +0000868
869A. There's a bug in Tkinter.py; remove ClassType and InstanceType from
870the definition of CallableTypes near the top of Lib/tkinter/Tkinter.py.
871
8723.17. Q. I built with tkintermodule.c enabled but get "Tkinter not found".
873
874A. Tkinter.py (note: upper case T) lives in a subdirectory of Lib,
875Lib/tkinter. If you are using the default module search path, you
876probably didn't enable the line in the Modules/Setup file defining
877TKPATH; if you use the environment variable PYTHONPATH, you'll have to
878add the proper tkinter subdirectory.
879
8803.18. Q. I built with Tk 4.0 but Tkinter complains about the Tk version.
881
882A. Several things could cause this. You most likely have a Tk 3.6
883installation that wasn't completely eradicated by the Tk 4.0
884installation (which tends to add "4.0" to its installed files). You
885may have the Tk 3.6 support library installed in the place where the
886Tk 4.0 support files should be (default /usr/local/lib/tk/); you may
887have compiled Python with the old tk.h header file (yes, this actually
888compiles!); you may actually have linked with Tk 3.6 even though Tk
8894.0 is also around. Similar for Tcl 7.4 vs. Tcl 7.3.
890
8913.19. Q. Tk doesn't work right on DEC Alpha.
892
893A. You probably compiled either Tcl, Tk or Python with gcc. Don't.
894For this platform, which has 64-bit integers, gcc is known to generate
895broken code. The standard cc (which comes bundled with the OS!)
896works. If you still prefer gcc, at least try recompiling with cc
897before reporting problems to the newsgroup or the author; if this
898fixes the problem, report the bug to the gcc developers instead. (As
899far as we know, there are no problem with gcc on other platforms --
900the instabilities seem to be restricted to the DEC Alpha.) See also
901question 3.6.
902
Guido van Rossuma7925f11994-01-26 10:20:16 +0000903
9044. Programming in Python
905========================
906
Guido van Rossum24349991994-02-02 14:12:45 +00009074.1. Q. Is there a source code level debugger with breakpoints, step,
908etc.?
909
910A. Yes. Check out module pdb; pdb.help() prints the documentation (or
911you can read it as Lib/pdb.doc). If you use the STDWIN option,
912there's also a windowing interface, wdb. You can write your own
913debugger by using the code for pdb or wdb as an example.
914
9154.2. Q. Can I create an object class with some methods implemented in
Guido van Rossuma7925f11994-01-26 10:20:16 +0000916C and others in Python (e.g. through inheritance)? (Also phrased as:
917Can I use a built-in type as base class?)
918
919A. No, but you can easily create a Python class which serves as a
920wrapper around a built-in object, e.g. (for dictionaries):
921
Guido van Rossuma6c707c1995-01-02 17:32:28 +0000922 # A user-defined class behaving almost identical
923 # to a built-in dictionary.
924 class UserDict:
925 def __init__(self): self.data = {}
926 def __repr__(self): return repr(self.data)
927 def __cmp__(self, dict):
928 if type(dict) == type(self.data):
929 return cmp(self.data, dict)
930 else:
931 return cmp(self.data, dict.data)
932 def __len__(self): return len(self.data)
933 def __getitem__(self, key): return self.data[key]
934 def __setitem__(self, key, item): self.data[key] = item
935 def __delitem__(self, key): del self.data[key]
936 def keys(self): return self.data.keys()
937 def items(self): return self.data.items()
938 def values(self): return self.data.values()
939 def has_key(self, key): return self.data.has_key(key)
Guido van Rossuma7925f11994-01-26 10:20:16 +0000940
Guido van Rossum24349991994-02-02 14:12:45 +00009414.3. Q. Is there a curses/termcap package for Python?
Guido van Rossuma7925f11994-01-26 10:20:16 +0000942
Guido van Rossuma6c707c1995-01-02 17:32:28 +0000943A. Yes -- Lance Ellinghaus has written a module that interfaces to
Guido van Rossumb34e8aa1994-09-23 14:20:38 +0000944System V's "ncurses". If you know a little curses and some Python,
Guido van Rossuma6c707c1995-01-02 17:32:28 +0000945it's straightforward to use. It is part of the standard Python
946distribution, but not configured by default -- you must enable it by
947editing Modules/Setup. It requires a System V curses implementation.
Guido van Rossumb34e8aa1994-09-23 14:20:38 +0000948
949You could also consider using the "alfa" (== character cell) version
Guido van Rossuma6c707c1995-01-02 17:32:28 +0000950of STDWIN. (Standard Window System Interface, a portable windowing
951system interface by myself <URL:ftp://ftp.cwi.nl/pub/stdwin/>.) This
Guido van Rossumb34e8aa1994-09-23 14:20:38 +0000952will also prepare your program for porting to windowing environments
953such as X11 or the Macintosh.
Guido van Rossuma7925f11994-01-26 10:20:16 +0000954
Guido van Rossum24349991994-02-02 14:12:45 +00009554.4. Q. Is there an equivalent to C's onexit() in Python?
Guido van Rossuma7925f11994-01-26 10:20:16 +0000956
957A. Yes, if you import sys and assign a function to sys.exitfunc, it
958will be called when your program exits, is killed by an unhandled
959exception, or (on UNIX) receives a SIGHUP or SIGTERM signal.
960
Guido van Rossum24349991994-02-02 14:12:45 +00009614.5. Q. When I define a function nested inside another function, the
Guido van Rossuma7925f11994-01-26 10:20:16 +0000962nested function seemingly can't access the local variables of the
963outer function. What is going on? How do I pass local data to a
964nested function?
965
966A. Python does not have arbitrarily nested scopes. When you need to
967create a function that needs to access some data which you have
968available locally, create a new class to hold the data and return a
969method of an instance of that class, e.g.:
970
Guido van Rossuma6c707c1995-01-02 17:32:28 +0000971 class MultiplierClass:
972 def __init__(self, factor):
973 self.factor = factor
974 def multiplier(self, argument):
975 return argument * self.factor
Guido van Rossuma7925f11994-01-26 10:20:16 +0000976
Guido van Rossuma6c707c1995-01-02 17:32:28 +0000977 def generate_multiplier(factor):
978 return MultiplierClass(factor).multiplier
Guido van Rossuma7925f11994-01-26 10:20:16 +0000979
Guido van Rossuma6c707c1995-01-02 17:32:28 +0000980 twice = generate_multiplier(2)
981 print twice(10)
982 # Output: 20
983
984An alternative solution uses default arguments, e.g.:
985
986 def generate_multiplier(factor):
987 def multiplier(arg, fact = factor):
988 return arg*fact
989 return multiplier
990
991 twice = generate_multiplier(2)
992 print twice(10)
993 # Output: 20
Guido van Rossuma7925f11994-01-26 10:20:16 +0000994
Guido van Rossum24349991994-02-02 14:12:45 +00009954.6. Q. How do I iterate over a sequence in reverse order?
Guido van Rossuma7925f11994-01-26 10:20:16 +0000996
997A. If it is a list, the fastest solution is
998
Guido van Rossuma6c707c1995-01-02 17:32:28 +0000999 list.reverse()
1000 try:
1001 for x in list:
1002 "do something with x"
1003 finally:
1004 list.reverse()
Guido van Rossuma7925f11994-01-26 10:20:16 +00001005
1006This has the disadvantage that while you are in the loop, the list
1007is temporarily reversed. If you don't like this, you can make a copy.
1008This appears expensive but is actually faster than other solutions:
1009
Guido van Rossuma6c707c1995-01-02 17:32:28 +00001010 rev = list[:]
1011 rev.reverse()
1012 for x in rev:
1013 <do something with x>
Guido van Rossuma7925f11994-01-26 10:20:16 +00001014
1015If it isn't a list, a more general but slower solution is:
1016
Guido van Rossuma6c707c1995-01-02 17:32:28 +00001017 i = len(list)
1018 while i > 0:
1019 i = i-1
1020 x = list[i]
1021 <do something with x>
Guido van Rossuma7925f11994-01-26 10:20:16 +00001022
1023A more elegant solution, is to define a class which acts as a sequence
1024and yields the elements in reverse order (solution due to Steve
1025Majewski):
1026
Guido van Rossuma6c707c1995-01-02 17:32:28 +00001027 class Rev:
1028 def __init__(self, seq):
1029 self.forw = seq
1030 def __len__(self):
1031 return len(self.forw)
1032 def __getitem__(self, i):
1033 return self.forw[-(i + 1)]
Guido van Rossuma7925f11994-01-26 10:20:16 +00001034
1035You can now simply write:
1036
Guido van Rossuma6c707c1995-01-02 17:32:28 +00001037 for x in Rev(list):
1038 <do something with x>
Guido van Rossuma7925f11994-01-26 10:20:16 +00001039
Guido van Rossum061f1821994-10-06 16:03:45 +00001040Unfortunately, this solution is slowest of all, due to the method
Guido van Rossuma7925f11994-01-26 10:20:16 +00001041call overhead...
1042
Guido van Rossum24349991994-02-02 14:12:45 +000010434.7. Q. My program is too slow. How do I speed it up?
Guido van Rossuma7925f11994-01-26 10:20:16 +00001044
1045A. That's a tough one, in general. There are many tricks to speed up
1046Python code; I would consider rewriting parts in C only as a last
1047resort. One thing to notice is that function and (especially) method
1048calls are rather expensive; if you have designed a purely OO interface
1049with lots of tiny functions that don't do much more than get or set an
1050instance variable or call another method, you may consider using a
1051more direct way, e.g. directly accessing instance variables. Also see
1052the standard module "profile" (described in the file
1053"python/lib/profile.doc") which makes it possible to find out where
1054your program is spending most of its time (if you have some patience
1055-- the profiling itself can slow your program down by an order of
1056magnitude).
1057
Guido van Rossum24349991994-02-02 14:12:45 +000010584.8. Q. When I have imported a module, then edit it, and import it
Guido van Rossuma7925f11994-01-26 10:20:16 +00001059again (into the same Python process), the changes don't seem to take
1060place. What is going on?
1061
Guido van Rossuma6c707c1995-01-02 17:32:28 +00001062A. For reasons of efficiency as well as consistency, Python only reads
Guido van Rossum796b2591995-01-20 23:05:52 +00001063the module file on the first time a module is imported. (Otherwise a
Guido van Rossuma6c707c1995-01-02 17:32:28 +00001064program consisting of many modules, each of which imports the same
Guido van Rossum796b2591995-01-20 23:05:52 +00001065basic module, would read the basic module over and over again.) To
1066force rereading of a changed module, do this:
Guido van Rossuma7925f11994-01-26 10:20:16 +00001067
Guido van Rossuma6c707c1995-01-02 17:32:28 +00001068 import modname
1069 reload(modname)
Guido van Rossuma7925f11994-01-26 10:20:16 +00001070
1071Warning: this technique is not 100% fool-proof. In particular,
1072modules containing statements like
1073
Guido van Rossuma6c707c1995-01-02 17:32:28 +00001074 from modname import some_objects
Guido van Rossuma7925f11994-01-26 10:20:16 +00001075
Guido van Rossumb34e8aa1994-09-23 14:20:38 +00001076will continue to work with the old version of the imported objects.
Guido van Rossuma7925f11994-01-26 10:20:16 +00001077
Guido van Rossumb34e8aa1994-09-23 14:20:38 +000010784.9. Q. How do I find the current module name?
Guido van Rossum24349991994-02-02 14:12:45 +00001079
Guido van Rossum061f1821994-10-06 16:03:45 +00001080A. A module can find out its own module name by looking at the
Guido van Rossum24349991994-02-02 14:12:45 +00001081(predefined) global variable __name__. If this has the value
Guido van Rossumb34e8aa1994-09-23 14:20:38 +00001082'__main__' you are running as a script.
1083
Guido van Rossuma6c707c1995-01-02 17:32:28 +000010844.10. Q. I have a module in which I want to execute some extra code
1085when it is run as a script. How do I find out whether I am running as
1086a script?
Guido van Rossumb34e8aa1994-09-23 14:20:38 +00001087
1088A. See the previous question. E.g. if you put the following on the
1089last line of your module, main() is called only when your module is
1090running as a script:
Guido van Rossum24349991994-02-02 14:12:45 +00001091
Guido van Rossuma6c707c1995-01-02 17:32:28 +00001092 if __name__ == '__main__': main()
Guido van Rossum24349991994-02-02 14:12:45 +00001093
Guido van Rossuma6c707c1995-01-02 17:32:28 +000010944.11. Q. I try to run a program from the Demo directory but it fails
1095with ImportError: No module named ...; what gives?
Guido van Rossum7ce61c11994-06-13 15:13:56 +00001096
Guido van Rossum061f1821994-10-06 16:03:45 +00001097A. This is probably an optional module (written in C!) which hasn't
1098been configured on your system. This especially happens with modules
Guido van Rossuma6c707c1995-01-02 17:32:28 +00001099like "Tkinter", "stdwin", "gl", "Xt" or "Xm". For Tkinter, STDWIN and
1100many other modules, see Modules/Setup.in for info on how to add these
1101modules to your Python, if it is possible at all. Sometimes you will
1102have to ftp and build another package first (e.g. STDWIN). Sometimes
1103the module only works on specific platforms (e.g. gl only works on SGI
1104machines).
1105
1106NOTE: if the complaint is about "Tkinter" (upper case T) and you have
1107already configured module "tkinter" (lower case t), the solution is
1108*not* to rename tkinter to Tkinter or vice versa. There is probably
Guido van Rossum796b2591995-01-20 23:05:52 +00001109something wrong with your module search path. Check out the value of
Guido van Rossuma6c707c1995-01-02 17:32:28 +00001110sys.path.
Guido van Rossum7ce61c11994-06-13 15:13:56 +00001111
Guido van Rossum061f1821994-10-06 16:03:45 +00001112For X-related modules (Xt and Xm) you will have to do more work: they
1113are currently not part of the standard Python distribution. You will
Guido van Rossuma6c707c1995-01-02 17:32:28 +00001114have to ftp the Extensions tar file, e.g.
Guido van Rossum7be34a81995-05-31 15:17:12 +00001115<URL:ftp://ftp.python.org/pub/python/src/extensions.tar.gz> and follow
1116the instructions there.
Guido van Rossum061f1821994-10-06 16:03:45 +00001117
1118See also the next question.
1119
11204.12. Q. I have successfully built Python with STDWIN but it can't
1121find some modules (e.g. stdwinevents).
Guido van Rossumb34e8aa1994-09-23 14:20:38 +00001122
1123A. There's a subdirectory of the library directory named 'stdwin'
1124which should be in the default module search path. There's a line in
1125Modules/Setup(.in) that you have to enable for this purpose --
Guido van Rossum061f1821994-10-06 16:03:45 +00001126unfortunately in the latest release it's not near the other
Guido van Rossumb34e8aa1994-09-23 14:20:38 +00001127STDWIN-related lines so it's easy to miss it.
1128
11294.13. Q. What GUI toolkits exist for Python?
Guido van Rossum7ce61c11994-06-13 15:13:56 +00001130
1131A. Depending on what platform(s) you are aiming at, there are several.
1132
Guido van Rossumb34e8aa1994-09-23 14:20:38 +00001133- There's a neat object-oriented interface to the Tcl/Tk widget set,
Guido van Rossuma6c707c1995-01-02 17:32:28 +00001134called Tkinter. As of python 1.1, it is part of the standard Python
1135distribution -- all you need to do is enable it in Modules/Setup
1136(provided you have already installed Tk and Tcl). This is probably
1137the easiest to install and use, and the most complete widget set. It
1138is also very likely that in the future the standard Python GUI API
1139will be based on or at least look very much like the Tkinter
1140interface. For more info about Tk, including pointers to the source,
Guido van Rossumbf8e7d51995-08-28 03:09:13 +00001141see the Tcl/Tk home page <URL:http://www.sunlabs.com/research/tcl/>.
Guido van Rossumb34e8aa1994-09-23 14:20:38 +00001142
Guido van Rossum7ce61c11994-06-13 15:13:56 +00001143- The standard Python distribution comes with an interface to STDWIN,
Guido van Rossuma6c707c1995-01-02 17:32:28 +00001144a platform-independent low-level windowing interface. You have to ftp
1145the source for STDWIN separately,
1146e.g. <URL:ftp://ftp.cwi.nl/pub/stdwin/> or gatekeeper.dec.com in
1147pub/misc/stdwin <URL:ftp://gatekeeper.dec.com/pub/misc/stdwin/>.
1148STDWIN runs under X11 or the Mac; a Windows port has been attempted
1149but I can't seem to get it working. Note that STDWIN is really not
1150powerful enough to implement a modern GUI (no widgets, etc.) and that
1151I don't have the time to maintain or extend it, so you may be better
1152off using Tkinter or the Motif interface, unless you require
1153portability to the Mac (which is also offered by SUIT, by the way --
1154see below).
Guido van Rossum7ce61c11994-06-13 15:13:56 +00001155
Guido van Rossumb34e8aa1994-09-23 14:20:38 +00001156- For SGI IRIX only, there's an interface to the complete GL (Graphics
Guido van Rossum7ce61c11994-06-13 15:13:56 +00001157Library -- low level but very good 3D capabilities) as well as to
1158FORMS (a buttons-and-sliders-etc package built on top of GL by Mark
Guido van Rossuma6c707c1995-01-02 17:32:28 +00001159Overmars -- ftp'able from <URL:ftp://ftp.cs.ruu.nl/pub/SGI/FORMS/>).
Guido van Rossum7ce61c11994-06-13 15:13:56 +00001160
1161- There's an interface to X11, including the Athena and Motif widget
1162sets (and a few individual widgets, like Mosaic's HTML widget and
1163SGI's GL widget) in the Extensions set, which is separately ftp'able
Guido van Rossum7be34a81995-05-31 15:17:12 +00001164<URL:ftp://ftp.python.org/pub/python/src/extensions.tar.gz>.
Guido van Rossum7ce61c11994-06-13 15:13:56 +00001165
1166- There's an interface to SUIT, the U of Virginia's Simple User
Guido van Rossuma6c707c1995-01-02 17:32:28 +00001167Interface Toolkit; it can be ftp'ed from
1168<URL:ftp://uvacs.cs.virginia.edu/pub/suit/python/SUIT_python.tar.Z>.
1169A PC binary of Python 1.0.2 compiled with DJGPP and with SUIT support
1170built-in has been made available by Antonio Costa
1171<URL:ftp://asterix.inescn.pt/pub/PC/python/pyt102su.exe> (a
1172self-extracting archive). Note that the UVa people themselves have
1173expressed doubts about SUIT, and are planning to build a Python GUI
1174API based upon Tk (though not necessarily on Tkinter); see
1175<URL:http://server.cs.virginia.edu/~tnb2d/IT/IT.html>.
Guido van Rossum7ce61c11994-06-13 15:13:56 +00001176
Guido van Rossum7ce61c11994-06-13 15:13:56 +00001177- There's an interface to WAFE, a Tcl interface to the X11 Motif and
Guido van Rossuma6c707c1995-01-02 17:32:28 +00001178Athena widget sets. Last I heard about it it was included in the WAFE
11791.0 prerelease
1180<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 +00001181
Guido van Rossumbf8e7d51995-08-28 03:09:13 +00001182- The NT port by Mark Hammond (see question 7.4) includes an interface
1183to the Microsoft Foundation Classes and a Python programming
1184environment using it that's written mostly in Python. See
1185<URL:ftp://ftp.python.org/pub/python/nt/>.
1186
Guido van Rossuma8a8d4a1995-03-10 16:19:31 +00001187- There's an interface to wxWindows. wxWindows is a portable GUI
1188class library written in C++. It supports XView, Motif, MS-Windows as
1189targets. There is some support for Macs and CURSES as well. wxWindows
1190preserves the look and feel of the underlying graphics toolkit. See
1191the wxPython WWW page at
1192<URL:http://www.aiai.ed.ac.uk/~jacs/wx/wxpython/wxpython.html>.
1193
Guido van Rossum3fc9d731995-07-25 15:10:56 +00001194- There's an object-oriented GUI based on the Microsoft Foundation
1195Classes model called WPY. Programs written in WPY run unchanged and
1196with native look and feel on NT, Windows 3.1 (using win32s) and on
1197Unix (using Tk). Source and binaries for NT and Linux are available
1198in <URL:ftp://ftp.python.org/pub/python/wpy>.
1199
Guido van Rossuma8a8d4a1995-03-10 16:19:31 +00001200- Python has been mentioned on the "Futurism" subpage of the Fresco
1201home page <URL:http://www.faslab.com/fresco/HomePage.html>. "Pesto"
1202is a Python interface to the CORBA dynamic invocation interface, and
1203thus Fresco. A Pesto prototype is running and is currently being
Guido van Rossum7be34a81995-05-31 15:17:12 +00001204packaged up for inclusion in the Fresco snapshot. See also the Pesto
1205web pages: <URL:http://www.faslab.com/fresco/pesto/Index.html>.
Guido van Rossuma8a8d4a1995-03-10 16:19:31 +00001206
Guido van Rossum061f1821994-10-06 16:03:45 +000012074.14. Q. Are there any interfaces to database packages in Python?
Guido van Rossum7ce61c11994-06-13 15:13:56 +00001208
1209A. There's an interface to SYBASE by John Redford
1210<jredford@lehman.com>.
1211
Guido van Rossum796b2591995-01-20 23:05:52 +00001212There's an interface to metalbase by Lance Ellinghaus
Guido van Rossuma6c707c1995-01-02 17:32:28 +00001213<lance@markv.com>; it is part of the separate Extensions distribution
Guido van Rossum7be34a81995-05-31 15:17:12 +00001214<URL:ftp://ftp.python.org/pub/python/src/extensions.tar.gz>.
Guido van Rossum7ce61c11994-06-13 15:13:56 +00001215
Guido van Rossumb34e8aa1994-09-23 14:20:38 +00001216Anthony Baxter <anthony.baxter@aaii.oz.au> has written an interface to
Guido van Rossume530c581995-04-10 12:32:16 +00001217mSQL (mini-SQL).
Guido van Rossum7be34a81995-05-31 15:17:12 +00001218<URL:ftp://ftp.python.org/pub/python/contrib/PymSQL.tar.gz>.
Guido van Rossumb34e8aa1994-09-23 14:20:38 +00001219
Guido van Rossum7be34a81995-05-31 15:17:12 +00001220Tom Culliton <culliton@clark.net> has written an Oracle module.
1221See <URL:ftp://ftp.clark.net/pub/culliton/oramod.tgz>.
Guido van Rossum796b2591995-01-20 23:05:52 +00001222
Guido van Rossumb34e8aa1994-09-23 14:20:38 +000012234.15. Q. Is it possible to write obfuscated one-liners in Python?
Guido van Rossumc24da7c1994-09-23 14:08:41 +00001224
1225A. Yes. See the following three examples, due to Ulf Bartelt:
1226
Guido van Rossuma6c707c1995-01-02 17:32:28 +00001227 # Primes < 1000
1228 print filter(None,map(lambda y:y*reduce(lambda x,y:x*y!=0,
1229 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 +00001230
Guido van Rossuma6c707c1995-01-02 17:32:28 +00001231 # First 10 Fibonacci numbers
1232 print map(lambda x,f=lambda x,f:(x<=1) or (f(x-1,f)+f(x-2,f)): f(x,f),
1233 range(10))
Guido van Rossumc24da7c1994-09-23 14:08:41 +00001234
Guido van Rossuma6c707c1995-01-02 17:32:28 +00001235 # Mandelbrot set
1236 print (lambda Ru,Ro,Iu,Io,IM,Sx,Sy:reduce(lambda x,y:x+y,map(lambda y,
1237 Iu=Iu,Io=Io,Ru=Ru,Ro=Ro,Sy=Sy,L=lambda yc,Iu=Iu,Io=Io,Ru=Ru,Ro=Ro,i=IM,
1238 Sx=Sx,Sy=Sy:reduce(lambda x,y:x+y,map(lambda x,xc=Ru,yc=yc,Ru=Ru,Ro=Ro,
1239 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
1240 >=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(
1241 64+F(Ru+x*(Ro-Ru)/Sx,yc,0,0,i)),range(Sx))):L(Iu+y*(Io-Iu)/Sy),range(Sy
1242 ))))(-2.1, 0.7, -1.2, 1.2, 30, 80, 24)
1243 # \___ ___/ \___ ___/ | | |__ lines on screen
1244 # V V | |______ columns on screen
1245 # | | |__________ maximum of "iterations"
1246 # | |_________________ range on y axis
1247 # |____________________________ range on x axis
Guido van Rossumc24da7c1994-09-23 14:08:41 +00001248
1249Don't try this at home, kids!
1250
Guido van Rossumb34e8aa1994-09-23 14:20:38 +000012514.16. Q. Is there an equivalent of C's "?:" ternary operator?
Guido van Rossumc24da7c1994-09-23 14:08:41 +00001252
Guido van Rossumb34e8aa1994-09-23 14:20:38 +00001253A. Not directly. In many cases you can mimic a?b:c with "a and b or
1254c", but there's a flaw: if b is zero (or empty, or None -- anything
1255that tests false) then c will be selected instead. In many cases you
1256can prove by looking at the code that this can't happen (e.g. because
1257b is a constant or has a type that can never be false), but in general
1258this can be a problem.
1259
1260Steve Majewski (or was it Tim Peters?) suggested the following
1261solution: (a and [b] or [c])[0]. Because [b] is a singleton list it
1262is never false, so the wrong path is never taken; then applying [0] to
1263the whole thing gets the b or c that you really wanted. Ugly, but it
1264gets you there in the rare cases where it is really inconvenient to
1265rewrite your code using 'if'.
1266
12674.17. Q. My class defines __del__ but it is not called when I delete the
1268object.
1269
1270A. There are several possible reasons for this.
1271
1272- The del statement does not necessarily call __del__ -- it simply
1273decrements the object's reference count, and if this reaches zero
1274__del__ is called.
1275
1276- If your data structures contain circular links (e.g. a tree where
1277each child has a parent pointer and each parent has a list of
1278children) the reference counts will never go back to zero. You'll
Guido van Rossum061f1821994-10-06 16:03:45 +00001279have to define an explicit close() method which removes those
Guido van Rossumb34e8aa1994-09-23 14:20:38 +00001280pointers. Please don't ever call __del__ directly -- __del__ should
Guido van Rossum061f1821994-10-06 16:03:45 +00001281call close() and close() should make sure that it can be called more
Guido van Rossumb34e8aa1994-09-23 14:20:38 +00001282than once for the same object.
1283
1284- If the object has ever been a local variable (or argument, which is
1285really the same thing) to a function that caught an expression in an
1286except clause, chances are that a reference to the object still exists
1287in that function's stack frame as contained in the stack trace.
1288Normally, deleting (better: assigning None to) sys.exc_traceback will
1289take care of this. If you a stack was printed for an unhandled
1290exception in an interactive interpreter, delete sys.last_traceback
1291instead.
1292
1293- There is code that deletes all objects when the interpreter exits,
1294but if your Python has been configured to support threads, it is not
1295called (because other threads may still be active). You can define
Guido van Rossum061f1821994-10-06 16:03:45 +00001296your own cleanup function using sys.exitfunc (see question 4.4).
Guido van Rossumb34e8aa1994-09-23 14:20:38 +00001297
Guido van Rossuma6c707c1995-01-02 17:32:28 +00001298- Finally, there are some obscure bugs if your __del__ method does
1299complicated things such as updating dictionaries or lists or
1300references globals. I hope to have fixed these in release 1.2.
1301
13024.18. Q. How do I change the shell environment for programs called
1303using os.popen() or os.system()? Changing os.environ doesn't work.
Guido van Rossumb34e8aa1994-09-23 14:20:38 +00001304
1305A. Modifying the environment passed to subshells was left out of the
1306interpreter because there seemed to be no well-established portable
Guido van Rossuma6c707c1995-01-02 17:32:28 +00001307way to do it (in particular, some systems, have putenv(), others have
1308setenv(), and some have none at all).
Guido van Rossumb34e8aa1994-09-23 14:20:38 +00001309
1310However if all you want is to pass environment variables to the
1311commands run by os.system() or os.popen(), there's a simple solution:
1312prefix the command string with a couple of variable assignments and
Guido van Rossum796b2591995-01-20 23:05:52 +00001313export statements. The following would be universal for popen:
Guido van Rossumb34e8aa1994-09-23 14:20:38 +00001314
Guido van Rossuma6c707c1995-01-02 17:32:28 +00001315 import os
1316 from commands import mkarg # nifty routine to add shell quoting
1317 def epopen(cmd, mode, env = {}):
1318 # env is a dictionary of environment variables
1319 prefix = ''
Guido van Rossum796b2591995-01-20 23:05:52 +00001320 for key, value in env.items():
1321 prefix = prefix + '%s=%s\n' % (key, mkarg(value)[1:])
Guido van Rossuma6c707c1995-01-02 17:32:28 +00001322 prefix = prefix + 'export %s\n' % key
1323 return os.popen(prefix + cmd, mode)
Guido van Rossumb34e8aa1994-09-23 14:20:38 +00001324
13254.19. Q. What is a class?
1326
1327A. A class is the particular object type that is created by executing
Guido van Rossum796b2591995-01-20 23:05:52 +00001328a class statement. Class objects are used as templates, to create
1329class instance objects, which embody both the data structure and
1330program routines specific to a datatype.
Guido van Rossumb34e8aa1994-09-23 14:20:38 +00001331
13324.20. Q. What is a method?
1333
1334A. A method is a function that you normally call as
Guido van Rossum796b2591995-01-20 23:05:52 +00001335x.name(arguments...) for some object x. The term is used for methods
Guido van Rossumb34e8aa1994-09-23 14:20:38 +00001336of classes and class instances as well as for methods of built-in
Guido van Rossum796b2591995-01-20 23:05:52 +00001337objects. (The latter have a completely different implementation and
1338only share the way their calls look in Python code.) Methods of
1339classes (and class instances) are defined as functions inside the
1340class definition.
Guido van Rossumb34e8aa1994-09-23 14:20:38 +00001341
13424.21. Q. What is self?
1343
1344A. Self is merely a conventional name for the first argument of a
1345method -- i.e. a function defined inside a class definition. A method
1346defined as meth(self, a, b, c) should be called as x.meth(a, b, c) for
1347some instance x of the class in which the definition occurs;
1348the called method will think it is called as meth(x, a, b, c).
1349
13504.22. Q. What is a unbound method?
1351
1352A. An unbound method is a method defined in a class that is not yet
1353bound to an instance. You get an unbound method if you ask for a
1354class attribute that happens to be a function. You get a bound method
1355if you ask for an instance attribute. A bound method knows which
Guido van Rossum061f1821994-10-06 16:03:45 +00001356instance it belongs to and calling it supplies the instance automatically;
Guido van Rossumb34e8aa1994-09-23 14:20:38 +00001357an unbound method only knows which class it wants for its first
1358argument (a derived class is also OK). Calling an unbound method
1359doesn't "magically" derive the first argument from the context -- you
1360have to provide it explicitly.
1361
Guido van Rossuma6c707c1995-01-02 17:32:28 +000013624.23. Q. How do I call a method defined in a base class from a derived
1363class that overrides it?
Guido van Rossumb34e8aa1994-09-23 14:20:38 +00001364
1365A. If your class definition starts with "class Derived(Base): ..."
1366then you can call method meth defined in Base (or one of Base's base
1367classes) as Base.meth(self, arguments...). Here, Base.meth is an
1368unbound method (see previous question).
1369
Guido van Rossuma6c707c1995-01-02 17:32:28 +000013704.24. Q. How do I call a method from a base class without using the
1371name of the base class?
Guido van Rossumb34e8aa1994-09-23 14:20:38 +00001372
1373A. DON'T DO THIS. REALLY. I MEAN IT. It appears that you could call
1374self.__class__.__bases__[0].meth(self, arguments...) but this fails when
Guido van Rossum061f1821994-10-06 16:03:45 +00001375a doubly-derived method is derived from your class: for its instances,
Guido van Rossumb34e8aa1994-09-23 14:20:38 +00001376self.__class__.__bases__[0] is your class, not its base class -- so
1377(assuming you are doing this from within Derived.meth) you would start
1378a recursive call.
1379
13804.25. Q. How can I organize my code to make it easier to change the base
1381class?
1382
1383A. You could define an alias for the base class, assign the real base
1384class to it before your class definition, and use the alias throughout
1385your class. Then all you have to change is the value assigned to the
1386alias. Incidentally, this trick is also handy if you want to decide
1387dynamically (e.g. depending on availability of resources) which base
1388class to use. Example:
1389
1390BaseAlias = <real base class>
1391class Derived(BaseAlias):
Guido van Rossuma6c707c1995-01-02 17:32:28 +00001392 def meth(self):
1393 BaseAlias.meth(self)
1394 ...
Guido van Rossumb34e8aa1994-09-23 14:20:38 +00001395
13964.26. Q. How can I find the methods or attributes of an object?
1397
1398A. This depends on the object type.
1399
1400For an instance x of a user-defined class, instance attributes are
1401found in the dictionary x.__dict__, and methods and attributes defined
1402by its class are found in x.__class__.__bases__[i].__dict__ (for i in
1403range(len(x.__class__.__bases__))). You'll have to walk the tree of
1404base classes to find *all* class methods and attributes.
1405
1406Many, but not all built-in types define a list of their method names
1407in x.__methods__, and if they have data attributes, their names may be
1408found in x.__members__. However this is only a convention.
1409
1410For more information, read the source of the standard (but
1411undocumented) module newdir.
1412
14134.27. Q. I can't seem to use os.read() on a pipe created with os.popen().
1414
1415A. os.read() is a low-level function which takes a file descriptor (a
1416small integer). os.popen() creates a high-level file object -- the
1417same type used for sys.std{in,out,err} and returned by the builtin
1418open() function. Thus, to read n bytes from a pipe p created with
1419os.popen(), you need to use p.read(n).
Guido van Rossuma7925f11994-01-26 10:20:16 +00001420
Guido van Rossum061f1821994-10-06 16:03:45 +000014214.28. Q. How can I create a stand-alone binary from a Python script?
1422
1423The demo script "Demo/scripts/freeze.py" does what you want. (It's
1424actually not a demo but a support tool -- there is some extra code in
1425the interpreter to accommodate it.) It requires that you have the
1426Python build tree handy, complete with all the lib*.a files.
1427
1428This works by scanning your source recursively for import statements
1429(both forms) and looking for the modules on the standard Python path
1430as well as in the source directory (for built-in modules). It then
1431"compiles" the modules written in Python to C code (array initializers
1432that can be turned into code objects using the marshal module) and
1433creates a custom-made config file that only contains those built-in
1434modules which are actually used in the program. It then compiles the
1435generated C code and links it with the rest of the Python interpreter
1436to form a self-contained binary which acts exactly like your script.
1437
Guido van Rossum7be34a81995-05-31 15:17:12 +00001438Hint: the freeze program only works if your script's filename ends in
1439".py".
Guido van Rossum061f1821994-10-06 16:03:45 +00001440
Guido van Rossum7be34a81995-05-31 15:17:12 +000014414.29. Q. What WWW tools are there for Python?
Guido van Rossum061f1821994-10-06 16:03:45 +00001442
Guido van Rossum7be34a81995-05-31 15:17:12 +00001443A. There's a whole lot in the 1.2 release; see the section on
1444"Internet and WWW" in the Library Reference Manual. Highlights: a CGI
1445parser, a url retriever, an html parser.
Guido van Rossum061f1821994-10-06 16:03:45 +00001446
1447Steve Miale <smiale@cs.indiana.edu> has written a modular WWW browser
1448called Dancer. An alpha version can be FTP'ed from
Guido van Rossuma6c707c1995-01-02 17:32:28 +00001449<URL:ftp://ftp.cs.indiana.edu/pub/smiale/dancer.tar.gz>. (There are a
1450few articles about Dancer in the (hyper)mail archive
1451<URL:http://www.cwi.nl/~guido/hypermail/python-1994q3/index.html>.)
Guido van Rossum061f1821994-10-06 16:03:45 +00001452
Guido van Rossum7be34a81995-05-31 15:17:12 +000014534.30. Q. How do I run a subprocess with pipes connected to both input
Guido van Rossum796b2591995-01-20 23:05:52 +00001454and output?
1455
1456A. This is really a UNIX question. Also, in general, it is unwise to
1457do so, because you can easily cause a deadlock where the parent
1458process is blocked waiting for output from the child, while the child
1459is blocked waiting for input from the child. This can be caused
1460because the parent expects the child to output more text than it does,
1461or it can be caused by data being stuck in stdio buffers due to lack
1462of flushing. The Python parent can of course explicitly flush the data
1463it sends to the child before it reads any output, but if the child is
1464a naive C program it can easily have been written to never explicitly
1465flush its output, even if it is interactive, since flushing is
1466normally automatic.
1467
1468In many cases, all you really need is to run some data through a
1469command and get the result back. Unless the data is infinite in size,
1470the easiest (and often the most efficient!) way to do this is to write
1471it to a temporary file and run the command with that temporary file as
1472input. The standard module tempfile exports a function mktemp() which
1473generates unique temporary file names.
1474
1475If after reading all of the above you still want to connect two pipes
1476to a subprocess's standard input and output, here's a simple solution,
1477due to Jack Jansen:
1478
1479 import os
1480 import sys
1481 import string
1482
1483 MAXFD = 100 # Max number of file descriptors in this system
1484
1485 def popen2(cmd):
1486 cmd = string.split(cmd)
1487 p2cread, p2cwrite = os.pipe()
1488 c2pread, c2pwrite = os.pipe()
1489 pid = os.fork()
1490 if pid == 0:
1491 # Child
1492 os.close(0)
1493 os.close(1)
1494 if os.dup(p2cread) <> 0:
1495 sys.stderr.write('popen2: bad read dup\n')
1496 if os.dup(c2pwrite) <> 1:
1497 sys.stderr.write('popen2: bad write dup\n')
1498 for i in range(3, MAXFD):
1499 try:
1500 os.close(i)
1501 except:
1502 pass
1503 try:
1504 os.execv(cmd[0], cmd)
1505 finally:
1506 os._exit(1)
1507 os.close(p2cread)
1508 tochild = os.fdopen(p2cwrite, 'w')
1509 os.close(c2pwrite)
1510 fromchild = os.fdopen(c2pread, 'r')
1511 return fromchild, tochild
1512
1513Note that many interactive programs (e.g. vi) don't work well with
1514pipes substituted for standard input and output. You will have to use
1515pseudo ttys ("ptys") instead of pipes. There is some undocumented
1516code to use these in the library module pty.py -- I'm afraid you're on
Guido van Rossum3fc9d731995-07-25 15:10:56 +00001517your own here.
1518
1519A different answer is a Python interface to Don Libes' "expect"
1520library. A prerelease of this is available on the Python ftp mirror
1521sites in the contrib subdirectory as expy-0.3.tar.gz, e.g.
1522<URL:ftp://ftp.python.org/pub/python/contrib/expy-0.3.tar.gz>.
Guido van Rossum796b2591995-01-20 23:05:52 +00001523
Guido van Rossum7be34a81995-05-31 15:17:12 +000015244.31. Q. How do I call a function if I have the arguments in a tuple?
Guido van Rossumac3f2121995-04-10 11:53:42 +00001525
1526A. Use the built-in function apply(). For instance,
1527
1528 func(1, 2, 3)
1529
1530is equivalent to
1531
1532 args = (1, 2, 3)
1533 apply(func, args)
1534
1535Note that func(args) is not the same -- it calls func() with exactly
1536one argument, the tuple args, instead of three arguments, the integers
15371, 2 and 3.
1538
Guido van Rossum7be34a81995-05-31 15:17:12 +000015394.32. Q. How do I enable font-lock-mode for Python in Emacs?
1540
1541A. Assuming you're already using python-mode and font-lock-mode
1542separately, all you need to do is put this in your .emacs file:
1543
1544 (defun my-python-mode-hook ()
1545 (setq font-lock-keywords python-font-lock-keywords)
1546 (font-lock-mode 1))
1547 (add-hook 'python-mode-hook 'my-python-mode-hook)
1548
15494.33. Q. Is there an inverse to the format operator (a la C's scanf())?
1550
1551A. Not as such.
1552
1553For simple input parsing, the easiest approach is usually to split
1554the line into whitespace-delimited words using string.split(), and to
1555convert decimal strings to numeric values using string.atoi(),
1556string.atol() or string.atof(). (Python's atoi() is 32-bit and its
1557atol() is arbitrary precision.) If you want to use another delimiter
1558than whitespace, use string.splitfield() (possibly combining it with
1559string.strip() which removes surrounding whitespace from a string).
1560
1561For more complicated input parsing, regular expressions (see module
1562regex) are better suited and more powerful than C's scanf().
1563
Guido van Rossum061f1821994-10-06 16:03:45 +00001564
Guido van Rossuma7925f11994-01-26 10:20:16 +000015655. Extending Python
1566===================
1567
15685.1. Q. Can I create my own functions in C?
1569
1570A. Yes, you can create built-in modules containing functions,
Guido van Rossum24349991994-02-02 14:12:45 +00001571variables, exceptions and even new types in C. This is explained in
1572the document "Extending and Embedding the Python Interpreter" (the
1573LaTeX file Doc/ext.tex). Also read the chapter on dynamic loading.
Guido van Rossuma7925f11994-01-26 10:20:16 +00001574
15755.2. Q. Can I create my own functions in C++?
1576
1577A. Yes, using the C-compatibility features found in C++. Basically
1578you place extern "C" { ... } around the Python include files and put
1579extern "C" before each function that is going to be called by the
1580Python interpreter. Global or static C++ objects with constructors
1581are probably not a good idea.
1582
Guido van Rossum7ce61c11994-06-13 15:13:56 +000015835.3. Q. How can I execute arbitrary Python statements from C?
1584
1585A. The highest-level function to do this is run_command() which takes
1586a single string argument which is executed in the context of module
1587__main__ and returns 0 for success and -1 when an exception occurred
1588(including SyntaxError). If you want more control, use run_string();
1589see the source for run_command() in Python/pythonrun.c.
1590
15915.4. Q. How can I evaluate an arbitrary Python expression from C?
1592
1593A. Call the function run_string() from the previous question with the
1594start symbol eval_input; it then parses an expression, evaluates it
1595and returns its value. See exec_eval() in Python/bltinmodule.c.
1596
15975.5. Q. How do I extract C values from a Python object?
1598
1599A. That depends on the object's type. If it's a tuple,
1600gettuplesize(o) returns its length and gettupleitem(o, i) returns its
1601i'th item; similar for lists with getlistsize(o) and getlistitem(o,
1602i). For strings, getstringsize(o) returns its length and
1603getstringvalue(o) a pointer to its value (note that Python strings may
1604contain null bytes so strlen() is not safe). To test which type an
1605object is, first make sure it isn't NULL, and then use
1606is_stringobject(o), is_tupleobject(o), is_listobject(o) etc.
1607
16085.6. Q. How do I use mkvalue() to create a tuple of arbitrary length?
1609
1610A. You can't. Use t = newtupleobject(n) instead, and fill it with
1611objects using settupleitem(t, i, o) -- note that this "eats" a
1612reference count of o. Similar for lists with newlistobject(n) and
Guido van Rossumb34e8aa1994-09-23 14:20:38 +00001613setlistitem(l, i, o). Note that you *must* set all the tuple items to
1614some value before you pass the tuple to Python code --
1615newtupleobject(n) initializes them to NULL, which isn't a valid Python
1616value.
1617
Guido van Rossum796b2591995-01-20 23:05:52 +000016185.7. Q. What happened to mktuple(), featured in an example in the
Guido van Rossumb34e8aa1994-09-23 14:20:38 +00001619Extensions manual?
1620
1621A. It's a typo, I meant newtupleobject() (see previous question).
1622
16235.8. Q. How do I call an object's method from C?
1624
1625A. Here's a function (untested) that might become part of the next
1626release in some form. It uses <stdarg.h> to allow passing the
1627argument list on to vmkvalue():
1628
Guido van Rossuma6c707c1995-01-02 17:32:28 +00001629 object *call_method(object *inst, char *methodname, char *format, ...)
1630 {
1631 object *method;
1632 object *args;
1633 object *result;
1634 va_list va;
1635 method = getattr(inst, methodname);
1636 if (method == NULL) return NULL;
1637 va_start(va, format);
1638 args = vmkvalue(format, va);
1639 va_end(va);
1640 if (args == NULL) {
1641 DECREF(method);
1642 return NULL;
1643 }
1644 result = call_object(method, args);
1645 DECREF(method);
1646 DECREF(args);
1647 return result;
1648 }
Guido van Rossumb34e8aa1994-09-23 14:20:38 +00001649
1650This works for any instance that has methods -- whether built-in or
1651user-defined. You are responsible for eventually DECREF'ing the
1652return value.
1653
1654To call, e.g., a file object's "seek" method with arguments 10, 0
1655(assuming the file object pointer is "f"):
1656
Guido van Rossuma6c707c1995-01-02 17:32:28 +00001657 res = call_method(f, "seek", "(OO)", 10, 0);
1658 if (res == NULL) {
1659 ... an exception occurred ...
1660 }
1661 else {
1662 DECREF(res);
1663 }
Guido van Rossumb34e8aa1994-09-23 14:20:38 +00001664
1665Note that since call_object() *always* wants a tuple for the argument
1666list, to call a function without arguments, pass "()" for the format,
1667and to call a function with one argument, surround the argument in
1668parentheses, e.g. "(i)".
1669
16705.9. Q. How do I catch the output from print_error()?
1671
1672A. (Due to Mark Hammond):
1673
1674* in Python code, define an object that supports the "write()" method.
1675FWIW, there seems to be a small problem that requires the 'softspace'
Guido van Rossuma8a8d4a1995-03-10 16:19:31 +00001676attribute to be defined too (fixed in 1.2).
Guido van Rossumb34e8aa1994-09-23 14:20:38 +00001677
1678* redirect sys.stdout and sys.stderr to this object.
1679
Guido van Rossum061f1821994-10-06 16:03:45 +00001680* call print_error, or just allow the standard traceback mechanism to
Guido van Rossumb34e8aa1994-09-23 14:20:38 +00001681work.
1682
Guido van Rossum061f1821994-10-06 16:03:45 +00001683Then, the output will go wherever your write() method sends it.
Guido van Rossumb34e8aa1994-09-23 14:20:38 +00001684
16855.10. Q. How do I access a module written in Python from C?
1686
1687A. You can get a pointer to the module object as follows:
1688
Guido van Rossuma6c707c1995-01-02 17:32:28 +00001689 module = import_module("<modulename>");
Guido van Rossumb34e8aa1994-09-23 14:20:38 +00001690
1691If the module hasn't been imported yet (i.e. it is not yet present in
1692sys.modules), this initializes the module; otherwise it simply returns
1693the value of sys.modules["<modulename>"]. Note that it doesn't enter
1694the module into any namespace -- it only ensures it has been
1695initialized and is stored in sys.modules.
1696
1697You can then access the module's attributes (i.e. any name defined in
1698the module) as follows:
1699
Guido van Rossuma6c707c1995-01-02 17:32:28 +00001700 attr = getattr(module, "<attrname>");
Guido van Rossumb34e8aa1994-09-23 14:20:38 +00001701
1702Calling setattr(), to assign to variables in the module, also works.
Guido van Rossum7ce61c11994-06-13 15:13:56 +00001703
Guido van Rossumb0a2ce51995-08-28 19:41:35 +000017045.11. Q. How do I interface to C++ objects from Python?
1705
1706A. Depending on your requirements, there are many approaches. Begin
1707by reading the "Extending and Embedding" document (Doc/ext.tex, see
1708also <URL:http://www.python.org/doc/>). Realize that for the Python
1709run-time system, there isn't a whole lot of difference between C and
1710C++ -- so the strategy to build a new Python type around a C structure
1711(pointer) type will also work for C++ objects.
1712
1713Automatic generation of interfaces between Python and C++ is still at
1714the horizon -- parsing C++ header files requires an almost complete
1715C++ parser, and many features aren't easily translated from C++ to
1716Python: certain forms of operator oveloading, function overloading
1717(best approached by a varargs function which explicitly type-checks
1718its arguments), and reference arguments are just a number of features
1719that are hard to translate correctly if at all.
1720
1721The hardest problem is to transparently translate the C++ class
1722hierarchy to Python, so that Python programs derive classes from C++
1723classes. Given suitable constraints, this may be possible, but it
1724would require more space than I have in this FAQ to explain how.
1725In any case, you can get quite a bit done without this, using just the
1726existing classes from Python.
1727
1728If this all seems rather daunting, that may be because it is -- C++
1729isn't exactly a baby to handle without gloves! However, people have
1730accomplished amazing feats of interfacing between Python and C++, and
1731a detailed question posted to the Python list is likely to elicit some
1732interesting and useful responses.
1733
Guido van Rossuma7925f11994-01-26 10:20:16 +00001734
17356. Python's design
1736==================
1737
Guido van Rossumb0a2ce51995-08-28 19:41:35 +000017386.1. Q. Why isn't there a generic copying operation for objects in Python?
Guido van Rossuma7925f11994-01-26 10:20:16 +00001739
Guido van Rossumb0a2ce51995-08-28 19:41:35 +00001740A. Historically, there wasn't. However, starting in Python 1.2,
1741there's a library module "copy" which supports both shallow and deep
1742copying of most common Python objects (though not things like open
1743files, sockets or windows), including an extensible mechanism to copy
1744class instances.
Guido van Rossuma7925f11994-01-26 10:20:16 +00001745
17466.2. Q. Why isn't there a generic way to implement persistent objects
1747in Python? (Persistent == automatically saved to and restored from
1748disk.)
1749
Guido van Rossumb0a2ce51995-08-28 19:41:35 +00001750A. Like the previous question, historically, there wasn't. The
1751library module "pickle" now solves this in a very general way (though
1752you still can't store things like open files, sockests or windows),
1753and the library module "shelve" uses pickle and (g)dbm to create
1754presistent mappings containing arbitrary Python objects. There are
1755some problems with shelve when using gdbm which will be solved in
1756Python 1.3.
Guido van Rossumb34e8aa1994-09-23 14:20:38 +00001757
Guido van Rossuma7925f11994-01-26 10:20:16 +000017586.3. Q. Why isn't there a switch or case statement in Python?
1759
1760A. You can do this easily enough with a sequence of
1761if... elif... elif... else. There have been some proposals for switch
Guido van Rossum061f1821994-10-06 16:03:45 +00001762statement syntax, but there is no consensus (yet) on whether and how
Guido van Rossuma7925f11994-01-26 10:20:16 +00001763to do range tests.
1764
Guido van Rossumc50158e1994-05-31 09:18:50 +000017656.4. Q. Why does Python use indentation for grouping of statements?
1766
1767A. Basically I believe that using indentation for grouping is
1768extremely elegant and contributes a lot to the clarity of the average
1769Python program. Most people learn to love this feature after a while.
1770Some arguments for it:
1771
1772- Since there are no begin/end brackets there cannot be a disagreement
1773between grouping perceived by the parser and the human reader. I
1774remember long ago seeing a C fragment like this:
1775
Guido van Rossuma6c707c1995-01-02 17:32:28 +00001776 if (x <= y)
1777 x++;
1778 y--;
1779 z++;
Guido van Rossumc50158e1994-05-31 09:18:50 +00001780
1781and staring a long time at it wondering why y was being decremented
1782even for x > y... (And I wasn't a C newbie then either.)
1783
Guido van Rossum7be34a81995-05-31 15:17:12 +00001784- Since there are no begin/end brackets, Python is much less prone to
1785coding-style conflicts. In C there are loads of different ways to
1786place the braces (including the choice whether to place braces around
1787single statements in certain cases, for consistency). If you're used
1788to reading (and writing) code that uses one style, you will feel at
1789least slightly uneasy when reading (or being required to write)
1790another style.
Guido van Rossumc50158e1994-05-31 09:18:50 +00001791
1792- Many coding styles place begin/end brackets on a line by themself.
1793This makes programs considerably longer and wastes valuable screen
1794space, making it harder to get a good overview over a program.
1795Ideally, a function should fit on one basic tty screen (say, 20
1796lines). 20 lines of Python are worth a LOT more than 20 lines of C.
1797This is not solely due to the lack of begin/end brackets (the lack of
1798declarations also helps, and the powerful operations of course), but
1799it certainly helps!
1800
Guido van Rossum3de27361994-07-25 14:19:33 +000018016.5. Q. Why are Python strings immutable?
1802
1803A. There are two advantages. One is performance: knowing that a
1804string is immutable makes it easy to lay it out at construction time
1805-- fixed and unchanging storage requirements. (This is also one of
Guido van Rossum061f1821994-10-06 16:03:45 +00001806the reasons for the distinction between tuples and lists.) The
Guido van Rossum3de27361994-07-25 14:19:33 +00001807other is that strings in Python are considered as "elemental" as
1808numbers. No amount of activity will change the value 8 to anything
1809else, and in Python, no amount of activity will change the string
1810"eight" to anything else. (Adapted from Jim Roskind)
1811
18126.6. Q. Why don't strings have methods like index() or sort(), like
1813lists?
1814
1815A. Good question. Strings currently don't have methods at all
1816(likewise tuples and numbers). Long ago, it seemed unnecessary to
1817implement any of these functions in C, so a standard library module
1818"string" written in Python was created that performs string related
1819operations. Since then, the cry for performance has moved most of
1820them into the built-in module strop (this is imported by module
Guido van Rossumf8c76d01994-08-17 12:19:53 +00001821string, which is still the preferred interface, without loss of
Guido van Rossum3de27361994-07-25 14:19:33 +00001822performance except during initialization). Some of these functions
1823(e.g. index()) could easily be implemented as string methods instead,
1824but others (e.g. sort()) can't, since their interface prescribes that
1825they modify the object, while strings are immutable (see the previous
1826question).
1827
18286.7. Q. Why does Python use methods for some functionality
1829(e.g. list.index()) but functions for other (e.g. len(list))?
1830
1831A. Functions are used for those operations that are generic for a
1832group of types and which should work even for objects that don't have
1833methods at all (e.g. numbers, strings, tuples). Also, implementing
1834len(), max(), min() as a built-in function is actually less code than
1835implementing them as methods for each type. One can quibble about
1836individual cases but it's really too late to change such things
1837fundamentally now.
1838
18396.8. Q. Why can't I derive a class from built-in types (e.g. lists or
1840files)?
1841
1842A. This is caused by the relatively late addition of (user-defined)
1843classes to the language -- the implementation framework doesn't easily
1844allow it. See the answer to question 4.2 for a work-around. This
1845*may* be fixed in the (distant) future.
1846
18476.9. Q. Why must 'self' be declared and used explicitly in method
1848definitions and calls?
1849
1850A. By asking this question you reveal your C++ background. :-)
1851When I added classes, this was (again) the simplest way of
1852implementing methods without too many changes to the interpreter. I
1853borrowed the idea from Modula-3. It turns out to be very useful, for
1854a variety of reasons.
1855
1856First, it makes it more obvious that you are using a method or
1857instance attribute instead of a local variable. Reading "self.x" or
1858"self.meth()" makes it absolutely clear that an instance variable or
1859method is used even if you don't know the class definition by heart.
1860In C++, you can sort of tell by the lack of a local variable
Guido van Rossum061f1821994-10-06 16:03:45 +00001861declaration (assuming globals are rare or easily recognizable) -- but
Guido van Rossum3de27361994-07-25 14:19:33 +00001862in Python, there are no local variable declarations, so you'd have to
1863look up the class definition to be sure.
1864
1865Second, it means that no special syntax is necessary if you want to
1866explicitly reference or call the method from a particular class. In
1867C++, if you want to use a method from base class that is overridden in
1868a derived class, you have to use the :: operator -- in Python you can
1869write baseclass.methodname(self, <argument list>). This is
1870particularly useful for __init__() methods, and in general in cases
1871where a derived class method wants to extend the base class method of
1872the same name and thus has to call the base class method somehow.
1873
1874Lastly, for instance variables, it solves a syntactic problem with
1875assignment: since local variables in Python are (by definition!) those
1876variables to which a value assigned in a function body (and that
1877aren't explicitly declared global), there has to be some way to tell
1878the interpreter that an assignment was meant to assign to an instance
1879variable instead of to a local variable, and it should preferably be
1880syntactic (for efficiency reasons). C++ does this through
1881declarations, but Python doesn't have declarations and it would be a
1882pity having to introduce them just for this purpose. Using the
1883explicit "self.var" solves this nicely. Similarly, for using instance
1884variables, having to write "self.var" means that references to
1885unqualified names inside a method don't have to search the instance's
1886directories.
1887
Guido van Rossumb34e8aa1994-09-23 14:20:38 +000018886.10. Q. Can't you emulate threads in the interpreter instead of
1889relying on an OS-specific thread implementation?
1890
1891A. Unfortunately, the interpreter pushes at least one C stack frame
1892for each Python stack frame. Also, extensions can call back into
1893Python at almost random moments. Therefore a complete threads
1894implementation requires thread support for C.
1895
Guido van Rossum061f1821994-10-06 16:03:45 +000018966.11. Q. Why can't lambda forms contain statements?
1897
1898A. Python lambda forms cannot contain statements because Python's
Guido van Rossum796b2591995-01-20 23:05:52 +00001899syntactic framework can't handle statements nested inside expressions.
Guido van Rossum061f1821994-10-06 16:03:45 +00001900
1901However, in Python, this is not a serious problem. Unlike lambda
1902forms in other languages, where they add functionality, Python lambdas
1903are only a shorthand notation if you're too lazy to define a function.
1904
1905Functions are already first class objects in Python, and can be
1906declared in a local scope. Therefore the only advantage of using a
1907lambda form instead of a locally-defined function is that you'll have
1908to invent a name for the function -- but that's just a local variable
1909to which the function object (which is exactly the same type of object
1910that a lambda form yields) is assigned!
1911
19126.12. Q. Why is there no more efficient way of iterating over a dictionary
1913than first constructing the list of keys()?
1914
1915A. Have you tried it? I bet it's fast enough for your purposes! In
1916most cases such a list takes only a few percent of the space occupied
1917by the dictionary -- it needs only 4 bytes (the size of a pointer) per
1918key -- a dictionary costs 8 bytes per key plus between 30 and 70
1919percent hash table overhead, plus the space for the keys and values --
1920by necessity all keys are unique objects and a string object (the most
1921common key type) costs at least 18 bytes plus the length of the
1922string. Add to that the values contained in the dictionary, and you
1923see that 4 bytes more per item really isn't that much more memory...
1924
1925A call to dict.keys() makes one fast scan over the dictionary
1926(internally, the iteration function does exist) copying the pointers
1927to the key objects into a pre-allocated list object of the right size.
1928The iteration time isn't lost (since you'll have to iterate anyway --
1929unless in the majority of cases your loop terminates very prematurely
1930(which I doubt since you're getting the keys in random order).
1931
1932I don't expose the dictionary iteration operation to Python
1933programmers because the dictionary shouldn't be modified during the
1934entire iteration -- if it is, there's a very small chance that the
1935dictionary is reorganized because the hash table becomes too full, and
1936then the iteration may miss some items and see others twice. Exactly
1937because this only occurs rarely, it would lead to hidden bugs in
1938programs: it's easy never to have it happen during test runs if you
1939only insert or delete a few items per iteration -- but your users will
1940surely hit upon it sooner or later.
1941
Guido van Rossumb0a2ce51995-08-28 19:41:35 +000019426.13. Q. Can Python be compiled to machine code, C or some other language?
1943
1944A. Not easily. Python's high level data types, dynamic typing of
1945objects and run-time invocation of the interpreter (using eval() or
1946exec) together mean that a "compiled" Python program would probably
1947consist mostly of calls into the Python run-time system, even for
1948seemingly simple operations like "x+1". Thus, the performance gain
1949would probably be minimal.
1950
1951Internally, Python source code is always translated into a "virtual
1952machine code" or "byte code" representation before it is interpreted
1953(by the "Python virtual machine" or "bytecode interpreter"). In order
1954to avoid the overhead of parsing and translating modules that rarely
1955change over and over again, this byte code is written on a file whose
1956name ends in ".pyc" whenever a module is parsed (from a file whose
1957name ends in ".py"). When the corresponding .py file is changed, it
1958is parsed and translated again and the .pyc file is rewritten. There
1959is no performance difference once the .pyc file has been loaded (the
1960bytecode read from the .pyc file is exactly the same as the bytecode
1961created by direct translation). The only difference is that loading
1962code from a .pyc file is faster than parsing and translating a .py
1963file, so the presence of precompiled .pyc files will generally improve
1964start-up time of Python scripts. If desired, the Lib/compileall.py
1965module/script can be used to force creation of valid .pyc files for a
1966given set of modules.
1967
1968If you are looking for a way to translate Python programs in order to
1969distribute them in binary form, without the need to distribute the
1970interpreter and library as well, have a look at the freeze.py script
1971in the Tools/freeze directory. This creates a single binary file
1972incorporating your program, the Python interpreter, and those parts of
1973the Python library that are needed by your program. Of course, the
1974resulting binary will only run on the same type of platform as that
1975used to create it.
1976
1977Hints for proper usage of freeze.py:
1978
1979- the script must be in a file whose name ends in .py
1980
1981- you must have installed Python fully:
1982
1983 make install
1984 make libinstall
1985 make inclinstall
1986 make libainstall
1987
Guido van Rossum05151e01995-09-28 13:24:46 +000019886.14. Q. Why doesn't Python use proper garbage collection?
1989
1990A. It's looking less and less likely that Python will ever get
1991"automatic" garbage collection (GC). For one thing, unless this were
1992added to C as a standard feature, it's a portability pain in the ass.
1993And yes, I know about the Xerox library. It has bits of assembler
1994code for *most* *common* platforms. Not for all. And although it is
1995mostly transparent, it isn't completely transparent (when I once
1996linked Python with it, it dumped core).
1997
1998"Proper" GC also becomes a problem when Python gets embedded into
1999other applications. While in a stand-alone Python it may be fine to
2000replace the standard malloc() and free() with versions provided by the
2001GC library, an application embedding Python may want to have its *own*
2002substitute for malloc() and free(), and may not want Python's. Right
2003now, Python works with anything that implements malloc() and free()
2004properly.
2005
2006Besides, the predictability of destructor calls in Python is kind of
2007attractive. With GC, the following code (which is fine in current
2008Python) will run out of file descriptors long before it runs out of
2009memory:
2010
2011 for file in <very long list of files>:
2012 f = open(file)
2013 c = file.read(1)
2014
2015Using the current reference counting and destructor scheme, each new
2016assignment to f closes the previous file. Using GC, this is not
2017guaranteed. Sure, you can think of ways to fix this. But it's not
2018off-the-shelf technology.
2019
Guido van Rossuma7925f11994-01-26 10:20:16 +00002020
20217. Using Python on non-UNIX platforms
2022=====================================
2023
Guido van Rossum91f60831994-02-15 15:52:27 +000020247.1. Q. Is there a Mac version of Python?
Guido van Rossuma7925f11994-01-26 10:20:16 +00002025
Guido van Rossume530c581995-04-10 12:32:16 +00002026A. Yes, see the "mac" subdirectory of the distribution sites,
Guido van Rossum7be34a81995-05-31 15:17:12 +00002027e.g. <URL:ftp://ftp.python.org/pub/python/mac/>.
Guido van Rossuma7925f11994-01-26 10:20:16 +00002028
Guido van Rossum91f60831994-02-15 15:52:27 +000020297.2. Q. Is there a DOS version of Python?
Guido van Rossuma7925f11994-01-26 10:20:16 +00002030
Guido van Rossume530c581995-04-10 12:32:16 +00002031A. Yes, see the "pc" subdirectory of the distribution sites,
Guido van Rossum7be34a81995-05-31 15:17:12 +00002032e.g. <URL:ftp://ftp.python.org/pub/python/pc/>.
Guido van Rossuma7925f11994-01-26 10:20:16 +00002033
Guido van Rossume530c581995-04-10 12:32:16 +000020347.3. Q. Is there a Windows 3.1(1) version of Python?
Guido van Rossumb34e8aa1994-09-23 14:20:38 +00002035
Guido van Rossume530c581995-04-10 12:32:16 +00002036A. Yes, also see the "pc" subdirectory of the distribution sites,
Guido van Rossum3fc9d731995-07-25 15:10:56 +00002037e.g. <URL:ftp://ftp.python.org/pub/python/pc/>. You may also be able
2038to run either of the Windows NT versions (see next question) if you
2039have Microsoft's "win32s".
Guido van Rossumb34e8aa1994-09-23 14:20:38 +00002040
Guido van Rossum91f60831994-02-15 15:52:27 +000020417.4. Q. Is there a Windows NT version of Python?
2042
Guido van Rossum3fc9d731995-07-25 15:10:56 +00002043A. There are two, both sporting DLL support for dynamic loading of
2044Python modules, and extensions to access the Win32 GUI API.
2045
2046Mark Hammond <MHammond@cmutual.com.au> maintains an NT port which
2047includes an interface to the Microsoft Foundation Classes and a Python
2048programming environment using it that's written mostly in Python. See
2049<URL:ftp://ftp.python.org/pub/python/nt/>.
2050
2051Jim Ahlstrom's WPY portable GUI runs on Windows NT and is modeled
2052after the Microsoft Foundation Classes. Source and binaries are
2053available in <URL:ftp://ftp.python.org/pub/python/wpy>.
Guido van Rossum91f60831994-02-15 15:52:27 +00002054
Guido van Rossuma6c707c1995-01-02 17:32:28 +00002055Sam Rushing <rushing@squirl.oau.org> once announced he knows how to
2056build Python for the Windows NT on the DEC Alpha AXP.
Guido van Rossum061f1821994-10-06 16:03:45 +00002057
2058Note that currently there is no unified compilation environment for
2059all NT platforms -- hopefully Microsoft will fix this with the release
2060of Visual C++ 2.0.
2061
Guido van Rossume530c581995-04-10 12:32:16 +000020627.5. Q. Is there a Windows 95 version of Python?
Guido van Rossum7ce61c11994-06-13 15:13:56 +00002063
Guido van Rossum3fc9d731995-07-25 15:10:56 +00002064A. The Windows NT versions might work, otherwise the Windows 3.1(1)
Guido van Rossume530c581995-04-10 12:32:16 +00002065version should work (isn't Windows 95 supposed to be backwards
2066compatible?).
Guido van Rossum7ce61c11994-06-13 15:13:56 +00002067
Guido van Rossume530c581995-04-10 12:32:16 +000020687.6. Q. Is there an OS/2 version of Python?
Guido van Rossumb34e8aa1994-09-23 14:20:38 +00002069
Guido van Rossume530c581995-04-10 12:32:16 +00002070A. Yes, also see the "pc" subdirectory of the distribution sites,
Guido van Rossum7be34a81995-05-31 15:17:12 +00002071e.g. <URL:ftp://ftp.python.org/pub/python/pc/>.
Guido van Rossumb34e8aa1994-09-23 14:20:38 +00002072
Guido van Rossume530c581995-04-10 12:32:16 +000020737.7. Q. Is there a VMS version of Python?
2074
Guido van Rossum3fc9d731995-07-25 15:10:56 +00002075A. Donn Cave <donn@cac.washington.edu> did a partial port. The
2076results of his efforts are on public display in
Guido van Rossumbf8e7d51995-08-28 03:09:13 +00002077<<URL:ftp://ftp.python.org/pub/python/contrib/vms.tar.gz/>. Someone
2078else is working on a more complete port, for details watch the list.
Guido van Rossume530c581995-04-10 12:32:16 +00002079
Guido van Rossum3fc9d731995-07-25 15:10:56 +000020807.8. Q. What about IBM mainframes, or other non-UNIX platforms?
Guido van Rossumb34e8aa1994-09-23 14:20:38 +00002081
Guido van Rossumb0a2ce51995-08-28 19:41:35 +00002082A. I haven't heard about these, except I remember hearing about an
2083OS/9 port and a port to Vxworks (both operating systems for embedded
2084systems). If you're interested in any of this, go directly to the
2085newsgroup and ask there, you may find exactly what you need. For
2086example, a port to MPE/iX 5.0 on HP3000 computers was just announced,
2087see <URL:http://www.allegro.com/software/>.
Guido van Rossumb34e8aa1994-09-23 14:20:38 +00002088
Guido van Rossume530c581995-04-10 12:32:16 +000020897.9. Q. Where are the source or Makefiles for the non-UNIX versions?
Guido van Rossumb34e8aa1994-09-23 14:20:38 +00002090
Guido van Rossume530c581995-04-10 12:32:16 +00002091A. The standard sources can (almost) be used. Additional sources can
2092be found in the platform-specific subdirectories of the distribution.
Guido van Rossumb34e8aa1994-09-23 14:20:38 +00002093
Guido van Rossume530c581995-04-10 12:32:16 +000020947.10. Q. What is the status and support for the non-UNIX versions?
Guido van Rossumb34e8aa1994-09-23 14:20:38 +00002095
2096A. I don't have access to most of these platforms, so in general I am
2097dependent on material submitted by volunteers(*). However I strive to
2098integrate all changes needed to get it to compile on a particular
2099platform back into the standard sources, so porting of the next
2100version to the various non-UNIX platforms should be easy.
2101
Guido van Rossuma6c707c1995-01-02 17:32:28 +00002102(*) For the Macintosh, that volunteer is me, with help from Jack
2103Jansen <jack@cwi.nl>.
Guido van Rossumb34e8aa1994-09-23 14:20:38 +00002104
Guido van Rossume530c581995-04-10 12:32:16 +000021057.11. Q. I have a PC version but it appears to be only a binary.
Guido van Rossum7ce61c11994-06-13 15:13:56 +00002106Where's the library?
Guido van Rossuma7925f11994-01-26 10:20:16 +00002107
2108A. You still need to copy the files from the distribution directory
Guido van Rossum91f60831994-02-15 15:52:27 +00002109"python/Lib" to your system. If you don't have the full distribution,
Guido van Rossume530c581995-04-10 12:32:16 +00002110you can get the file lib<version>.tar.gz from most ftp sites carrying
2111Python; this is a subset of the distribution containing just those
Guido van Rossum7be34a81995-05-31 15:17:12 +00002112files, e.g. <URL:ftp://ftp.python.org/pub/python/src/lib1.1.tar.gz>.
Guido van Rossuma7925f11994-01-26 10:20:16 +00002113
Guido van Rossum5333c5d1994-04-11 11:06:22 +00002114Once you have installed the library, you need to point sys.path to it.
2115Assuming the library is in C:\misc\python\lib, the following commands
2116will point your Python interpreter to it (note the doubled backslashes
2117-- you can also use single forward slashes instead):
2118
Guido van Rossuma6c707c1995-01-02 17:32:28 +00002119 >>> import sys
2120 >>> sys.path.insert(0, 'C:\\misc\\python\\lib')
2121 >>>
Guido van Rossum5333c5d1994-04-11 11:06:22 +00002122
2123For a more permanent effect, set the environment variable PYTHONPATH,
2124as follows (talking to a DOS prompt):
2125
Guido van Rossuma6c707c1995-01-02 17:32:28 +00002126 C> SET PYTHONPATH=C:\misc\python\lib
Guido van Rossum5333c5d1994-04-11 11:06:22 +00002127
Guido van Rossume530c581995-04-10 12:32:16 +000021287.12. Q. Where's the documentation for the Mac or PC version?
Guido van Rossuma7925f11994-01-26 10:20:16 +00002129
Guido van Rossume530c581995-04-10 12:32:16 +00002130A. The documentation for the Unix version also applies to the Mac and
2131PC versions. Where applicable, differences are indicated in the text.
Guido van Rossuma7925f11994-01-26 10:20:16 +00002132
Guido van Rossume530c581995-04-10 12:32:16 +000021337.13. Q. The Mac (PC) version doesn't seem to have any facilities for
Guido van Rossum91f60831994-02-15 15:52:27 +00002134creating or editing programs apart from entering it interactively, and
2135there seems to be no way to save code that was entered interactively.
2136How do I create a Python program on the Mac (PC)?
Guido van Rossuma7925f11994-01-26 10:20:16 +00002137
Guido van Rossumb34e8aa1994-09-23 14:20:38 +00002138A. Use an external editor. On the Mac, BBEdit seems to be a popular
2139no-frills text editor. I work like this: start the interpreter; edit
2140a module file using BBedit; import and test it in the interpreter;
2141edit again in BBedit; then use the built-in function reload() to
2142re-read the imported module; etc.
Guido van Rossum5333c5d1994-04-11 11:06:22 +00002143
2144Regarding the same question for the PC, Kurt Wm. Hemr writes: "While
2145anyone with a pulse could certainly figure out how to do the same on
2146MS-Windows, I would recommend the NotGNU Emacs clone for MS-Windows.
2147Not only can you easily resave and "reload()" from Python after making
2148changes, but since WinNot auto-copies to the clipboard any text you
2149select, you can simply select the entire procedure (function) which
2150you changed in WinNot, switch to QWPython, and shift-ins to reenter
2151the changed program unit."