| 
									
										
										
										
											2009-10-27 20:20:38 +00:00
										 |  |  | :tocdepth: 2
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | .. _windows-faq:
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =====================
 | 
					
						
							|  |  |  | Python on Windows FAQ
 | 
					
						
							|  |  |  | =====================
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | .. contents::
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
											  
											
												Merged revisions 76884-76885,76887,76889-76890,76895 via svnmerge from
svn+ssh://svn.python.org/python/branches/py3k
................
  r76884 | georg.brandl | 2009-12-19 18:35:49 +0100 (Sa, 19 Dez 2009) | 9 lines
  Merged revisions 76883 via svnmerge from
  svn+ssh://pythondev@svn.python.org/python/trunk
  ........
    r76883 | georg.brandl | 2009-12-19 18:34:32 +0100 (Sa, 19 Dez 2009) | 1 line
    #7521: remove Py_GetBuildNumber(), which was removed in favor of Py_GetBuildInfo().
  ........
................
  r76885 | georg.brandl | 2009-12-19 18:36:20 +0100 (Sa, 19 Dez 2009) | 1 line
  #7521: remove PyEval_GetRestricted() from the docs.
................
  r76887 | georg.brandl | 2009-12-19 18:46:40 +0100 (Sa, 19 Dez 2009) | 9 lines
  Recorded merge of revisions 76886 via svnmerge from
  svn+ssh://pythondev@svn.python.org/python/trunk
  ........
    r76886 | georg.brandl | 2009-12-19 18:43:33 +0100 (Sa, 19 Dez 2009) | 1 line
    #7493: review of Design FAQ by Florent Xicluna.
  ........
................
  r76889 | georg.brandl | 2009-12-19 18:57:51 +0100 (Sa, 19 Dez 2009) | 1 line
  #7499: Review of Library FAQ by Florent Xicluna.
................
  r76890 | georg.brandl | 2009-12-19 18:59:59 +0100 (Sa, 19 Dez 2009) | 1 line
  #7500: add "Python 3 review needed" comments and fix a few obvious errors.
................
  r76895 | georg.brandl | 2009-12-19 19:23:28 +0100 (Sa, 19 Dez 2009) | 1 line
  #7380: Fix some str/bytearray/bytes issues in uuid docs and implementation.
................
											
										 
											2010-10-06 07:12:17 +00:00
										 |  |  | .. XXX need review for Python 3.
 | 
					
						
							|  |  |  |    XXX need review for Windows Vista/Seven?
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-10-27 20:20:38 +00:00
										 |  |  | How do I run a Python program under Windows?
 | 
					
						
							|  |  |  | --------------------------------------------
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | This is not necessarily a straightforward question. If you are already familiar
 | 
					
						
							|  |  |  | with running programs from the Windows command line then everything will seem
 | 
					
						
							|  |  |  | obvious; otherwise, you might need a little more guidance.  There are also
 | 
					
						
							|  |  |  | differences between Windows 95, 98, NT, ME, 2000 and XP which can add to the
 | 
					
						
							|  |  |  | confusion.
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | .. sidebar:: |Python Development on XP|_
 | 
					
						
							|  |  |  |    :subtitle: `Python Development on XP`_
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |    This series of screencasts aims to get you up and running with Python on
 | 
					
						
							|  |  |  |    Windows XP.  The knowledge is distilled into 1.5 hours and will get you up
 | 
					
						
							|  |  |  |    and running with the right Python distribution, coding in your choice of IDE,
 | 
					
						
							|  |  |  |    and debugging and writing solid code with unit-tests.
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | .. |Python Development on XP| image:: python-video-icon.png
 | 
					
						
							|  |  |  | .. _`Python Development on XP`:
 | 
					
						
							|  |  |  |    http://www.showmedo.com/videos/series?name=pythonOzsvaldPyNewbieSeries
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Unless you use some sort of integrated development environment, you will end up
 | 
					
						
							|  |  |  | *typing* Windows commands into what is variously referred to as a "DOS window"
 | 
					
						
							|  |  |  | or "Command prompt window".  Usually you can create such a window from your
 | 
					
						
							|  |  |  | Start menu; under Windows 2000 the menu selection is :menuselection:`Start -->
 | 
					
						
							|  |  |  | Programs --> Accessories --> Command Prompt`.  You should be able to recognize
 | 
					
						
							|  |  |  | when you have started such a window because you will see a Windows "command
 | 
					
						
							|  |  |  | prompt", which usually looks like this::
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |    C:\>
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | The letter may be different, and there might be other things after it, so you
 | 
					
						
							|  |  |  | might just as easily see something like::
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |    D:\Steve\Projects\Python>
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | depending on how your computer has been set up and what else you have recently
 | 
					
						
							|  |  |  | done with it.  Once you have started such a window, you are well on the way to
 | 
					
						
							|  |  |  | running Python programs.
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | You need to realize that your Python scripts have to be processed by another
 | 
					
						
							|  |  |  | program called the Python interpreter.  The interpreter reads your script,
 | 
					
						
							|  |  |  | compiles it into bytecodes, and then executes the bytecodes to run your
 | 
					
						
							|  |  |  | program. So, how do you arrange for the interpreter to handle your Python?
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | First, you need to make sure that your command window recognises the word
 | 
					
						
							|  |  |  | "python" as an instruction to start the interpreter.  If you have opened a
 | 
					
						
							|  |  |  | command window, you should try entering the command ``python`` and hitting
 | 
					
						
							|  |  |  | return.  You should then see something like::
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |    Python 2.2 (#28, Dec 21 2001, 12:21:22) [MSC 32 bit (Intel)] on win32
 | 
					
						
							|  |  |  |    Type "help", "copyright", "credits" or "license" for more information.
 | 
					
						
							|  |  |  |    >>>
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | You have started the interpreter in "interactive mode". That means you can enter
 | 
					
						
							|  |  |  | Python statements or expressions interactively and have them executed or
 | 
					
						
							|  |  |  | evaluated while you wait.  This is one of Python's strongest features.  Check it
 | 
					
						
							|  |  |  | by entering a few expressions of your choice and seeing the results::
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
											  
											
												Merged revisions 76884-76885,76887,76889-76890,76895 via svnmerge from
svn+ssh://svn.python.org/python/branches/py3k
................
  r76884 | georg.brandl | 2009-12-19 18:35:49 +0100 (Sa, 19 Dez 2009) | 9 lines
  Merged revisions 76883 via svnmerge from
  svn+ssh://pythondev@svn.python.org/python/trunk
  ........
    r76883 | georg.brandl | 2009-12-19 18:34:32 +0100 (Sa, 19 Dez 2009) | 1 line
    #7521: remove Py_GetBuildNumber(), which was removed in favor of Py_GetBuildInfo().
  ........
................
  r76885 | georg.brandl | 2009-12-19 18:36:20 +0100 (Sa, 19 Dez 2009) | 1 line
  #7521: remove PyEval_GetRestricted() from the docs.
................
  r76887 | georg.brandl | 2009-12-19 18:46:40 +0100 (Sa, 19 Dez 2009) | 9 lines
  Recorded merge of revisions 76886 via svnmerge from
  svn+ssh://pythondev@svn.python.org/python/trunk
  ........
    r76886 | georg.brandl | 2009-12-19 18:43:33 +0100 (Sa, 19 Dez 2009) | 1 line
    #7493: review of Design FAQ by Florent Xicluna.
  ........
................
  r76889 | georg.brandl | 2009-12-19 18:57:51 +0100 (Sa, 19 Dez 2009) | 1 line
  #7499: Review of Library FAQ by Florent Xicluna.
................
  r76890 | georg.brandl | 2009-12-19 18:59:59 +0100 (Sa, 19 Dez 2009) | 1 line
  #7500: add "Python 3 review needed" comments and fix a few obvious errors.
................
  r76895 | georg.brandl | 2009-12-19 19:23:28 +0100 (Sa, 19 Dez 2009) | 1 line
  #7380: Fix some str/bytearray/bytes issues in uuid docs and implementation.
................
											
										 
											2010-10-06 07:12:17 +00:00
										 |  |  |     >>> print("Hello")
 | 
					
						
							| 
									
										
										
										
											2009-10-27 20:20:38 +00:00
										 |  |  |     Hello
 | 
					
						
							|  |  |  |     >>> "Hello" * 3
 | 
					
						
							|  |  |  |     HelloHelloHello
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Many people use the interactive mode as a convenient yet highly programmable
 | 
					
						
							|  |  |  | calculator.  When you want to end your interactive Python session, hold the Ctrl
 | 
					
						
							|  |  |  | key down while you enter a Z, then hit the "Enter" key to get back to your
 | 
					
						
							|  |  |  | Windows command prompt.
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | You may also find that you have a Start-menu entry such as :menuselection:`Start
 | 
					
						
							|  |  |  | --> Programs --> Python 2.2 --> Python (command line)` that results in you
 | 
					
						
							|  |  |  | seeing the ``>>>`` prompt in a new window.  If so, the window will disappear
 | 
					
						
							|  |  |  | after you enter the Ctrl-Z character; Windows is running a single "python"
 | 
					
						
							|  |  |  | command in the window, and closes it when you terminate the interpreter.
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | If the ``python`` command, instead of displaying the interpreter prompt ``>>>``,
 | 
					
						
							|  |  |  | gives you a message like::
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |    'python' is not recognized as an internal or external command,
 | 
					
						
							|  |  |  |    operable program or batch file.
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | .. sidebar:: |Adding Python to DOS Path|_
 | 
					
						
							|  |  |  |    :subtitle: `Adding Python to DOS Path`_
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |    Python is not added to the DOS path by default.  This screencast will walk
 | 
					
						
							|  |  |  |    you through the steps to add the correct entry to the `System Path`, allowing
 | 
					
						
							|  |  |  |    Python to be executed from the command-line by all users.
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | .. |Adding Python to DOS Path| image:: python-video-icon.png
 | 
					
						
							|  |  |  | .. _`Adding Python to DOS Path`:
 | 
					
						
							|  |  |  |    http://showmedo.com/videos/video?name=960000&fromSeriesID=96
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | or::
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |    Bad command or filename
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | then you need to make sure that your computer knows where to find the Python
 | 
					
						
							|  |  |  | interpreter.  To do this you will have to modify a setting called PATH, which is
 | 
					
						
							|  |  |  | a list of directories where Windows will look for programs.
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | You should arrange for Python's installation directory to be added to the PATH
 | 
					
						
							|  |  |  | of every command window as it starts.  If you installed Python fairly recently
 | 
					
						
							|  |  |  | then the command ::
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |    dir C:\py*
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | will probably tell you where it is installed; the usual location is something
 | 
					
						
							|  |  |  | like ``C:\Python23``.  Otherwise you will be reduced to a search of your whole
 | 
					
						
							|  |  |  | disk ... use :menuselection:`Tools --> Find` or hit the :guilabel:`Search`
 | 
					
						
							|  |  |  | button and look for "python.exe".  Supposing you discover that Python is
 | 
					
						
							|  |  |  | installed in the ``C:\Python23`` directory (the default at the time of writing),
 | 
					
						
							|  |  |  | you should make sure that entering the command ::
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |    c:\Python23\python
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | starts up the interpreter as above (and don't forget you'll need a "CTRL-Z" and
 | 
					
						
							|  |  |  | an "Enter" to get out of it). Once you have verified the directory, you need to
 | 
					
						
							|  |  |  | add it to the start-up routines your computer goes through.  For older versions
 | 
					
						
							|  |  |  | of Windows the easiest way to do this is to edit the ``C:\AUTOEXEC.BAT``
 | 
					
						
							|  |  |  | file. You would want to add a line like the following to ``AUTOEXEC.BAT``::
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |    PATH C:\Python23;%PATH%
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | For Windows NT, 2000 and (I assume) XP, you will need to add a string such as ::
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |    ;C:\Python23
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | to the current setting for the PATH environment variable, which you will find in
 | 
					
						
							|  |  |  | the properties window of "My Computer" under the "Advanced" tab.  Note that if
 | 
					
						
							|  |  |  | you have sufficient privilege you might get a choice of installing the settings
 | 
					
						
							|  |  |  | either for the Current User or for System.  The latter is preferred if you want
 | 
					
						
							|  |  |  | everybody to be able to run Python on the machine.
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | If you aren't confident doing any of these manipulations yourself, ask for help!
 | 
					
						
							|  |  |  | At this stage you may want to reboot your system to make absolutely sure the new
 | 
					
						
							|  |  |  | setting has taken effect.  You probably won't need to reboot for Windows NT, XP
 | 
					
						
							|  |  |  | or 2000.  You can also avoid it in earlier versions by editing the file
 | 
					
						
							|  |  |  | ``C:\WINDOWS\COMMAND\CMDINIT.BAT`` instead of ``AUTOEXEC.BAT``.
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | You should now be able to start a new command window, enter ``python`` at the
 | 
					
						
							|  |  |  | ``C:\>`` (or whatever) prompt, and see the ``>>>`` prompt that indicates the
 | 
					
						
							|  |  |  | Python interpreter is reading interactive commands.
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Let's suppose you have a program called ``pytest.py`` in directory
 | 
					
						
							|  |  |  | ``C:\Steve\Projects\Python``.  A session to run that program might look like
 | 
					
						
							|  |  |  | this::
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |    C:\> cd \Steve\Projects\Python
 | 
					
						
							|  |  |  |    C:\Steve\Projects\Python> python pytest.py
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Because you added a file name to the command to start the interpreter, when it
 | 
					
						
							|  |  |  | starts up it reads the Python script in the named file, compiles it, executes
 | 
					
						
							|  |  |  | it, and terminates, so you see another ``C:\>`` prompt.  You might also have
 | 
					
						
							|  |  |  | entered ::
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |    C:\> python \Steve\Projects\Python\pytest.py
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | if you hadn't wanted to change your current directory.
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Under NT, 2000 and XP you may well find that the installation process has also
 | 
					
						
							|  |  |  | arranged that the command ``pytest.py`` (or, if the file isn't in the current
 | 
					
						
							|  |  |  | directory, ``C:\Steve\Projects\Python\pytest.py``) will automatically recognize
 | 
					
						
							|  |  |  | the ".py" extension and run the Python interpreter on the named file. Using this
 | 
					
						
							|  |  |  | feature is fine, but *some* versions of Windows have bugs which mean that this
 | 
					
						
							|  |  |  | form isn't exactly equivalent to using the interpreter explicitly, so be
 | 
					
						
							|  |  |  | careful.
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | The important things to remember are:
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 1. Start Python from the Start Menu, or make sure the PATH is set correctly so
 | 
					
						
							|  |  |  |    Windows can find the Python interpreter. ::
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       python
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |    should give you a '>>>' prompt from the Python interpreter. Don't forget the
 | 
					
						
							|  |  |  |    CTRL-Z and ENTER to terminate the interpreter (and, if you started the window
 | 
					
						
							|  |  |  |    from the Start Menu, make the window disappear).
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 2. Once this works, you run programs with commands::
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       python {program-file}
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 3. When you know the commands to use you can build Windows shortcuts to run the
 | 
					
						
							|  |  |  |    Python interpreter on any of your scripts, naming particular working
 | 
					
						
							|  |  |  |    directories, and adding them to your menus.  Take a look at ::
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       python --help
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |    if your needs are complex.
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 4. Interactive mode (where you see the ``>>>`` prompt) is best used for checking
 | 
					
						
							|  |  |  |    that individual statements and expressions do what you think they will, and
 | 
					
						
							|  |  |  |    for developing code by experiment.
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-12-19 23:33:46 +00:00
										 |  |  | How do I make Python scripts executable?
 | 
					
						
							| 
									
										
										
										
											2009-10-27 20:20:38 +00:00
										 |  |  | ----------------------------------------
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | On Windows 2000, the standard Python installer already associates the .py
 | 
					
						
							|  |  |  | extension with a file type (Python.File) and gives that file type an open
 | 
					
						
							|  |  |  | command that runs the interpreter (``D:\Program Files\Python\python.exe "%1"
 | 
					
						
							|  |  |  | %*``).  This is enough to make scripts executable from the command prompt as
 | 
					
						
							|  |  |  | 'foo.py'.  If you'd rather be able to execute the script by simple typing 'foo'
 | 
					
						
							|  |  |  | with no extension you need to add .py to the PATHEXT environment variable.
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | On Windows NT, the steps taken by the installer as described above allow you to
 | 
					
						
							|  |  |  | run a script with 'foo.py', but a longtime bug in the NT command processor
 | 
					
						
							|  |  |  | prevents you from redirecting the input or output of any script executed in this
 | 
					
						
							|  |  |  | way.  This is often important.
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | The incantation for making a Python script executable under WinNT is to give the
 | 
					
						
							|  |  |  | file an extension of .cmd and add the following as the first line::
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |    @setlocal enableextensions & python -x %~f0 %* & goto :EOF
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Why does Python sometimes take so long to start?
 | 
					
						
							|  |  |  | ------------------------------------------------
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Usually Python starts very quickly on Windows, but occasionally there are bug
 | 
					
						
							|  |  |  | reports that Python suddenly begins to take a long time to start up.  This is
 | 
					
						
							|  |  |  | made even more puzzling because Python will work fine on other Windows systems
 | 
					
						
							|  |  |  | which appear to be configured identically.
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | The problem may be caused by a misconfiguration of virus checking software on
 | 
					
						
							|  |  |  | the problem machine.  Some virus scanners have been known to introduce startup
 | 
					
						
							|  |  |  | overhead of two orders of magnitude when the scanner is configured to monitor
 | 
					
						
							|  |  |  | all reads from the filesystem.  Try checking the configuration of virus scanning
 | 
					
						
							|  |  |  | software on your systems to ensure that they are indeed configured identically.
 | 
					
						
							|  |  |  | McAfee, when configured to scan all file system read activity, is a particular
 | 
					
						
							|  |  |  | offender.
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Where is Freeze for Windows?
 | 
					
						
							|  |  |  | ----------------------------
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | "Freeze" is a program that allows you to ship a Python program as a single
 | 
					
						
							|  |  |  | stand-alone executable file.  It is *not* a compiler; your programs don't run
 | 
					
						
							|  |  |  | any faster, but they are more easily distributable, at least to platforms with
 | 
					
						
							|  |  |  | the same OS and CPU.  Read the README file of the freeze program for more
 | 
					
						
							|  |  |  | disclaimers.
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | You can use freeze on Windows, but you must download the source tree (see
 | 
					
						
							|  |  |  | http://www.python.org/download/source).  The freeze program is in the
 | 
					
						
							|  |  |  | ``Tools\freeze`` subdirectory of the source tree.
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | You need the Microsoft VC++ compiler, and you probably need to build Python.
 | 
					
						
							|  |  |  | The required project files are in the PCbuild directory.
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Is a ``*.pyd`` file the same as a DLL?
 | 
					
						
							|  |  |  | --------------------------------------
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | .. XXX update for py3k (PyInit_foo)
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Yes, .pyd files are dll's, but there are a few differences.  If you have a DLL
 | 
					
						
							|  |  |  | named ``foo.pyd``, then it must have a function ``initfoo()``.  You can then
 | 
					
						
							|  |  |  | write Python "import foo", and Python will search for foo.pyd (as well as
 | 
					
						
							|  |  |  | foo.py, foo.pyc) and if it finds it, will attempt to call ``initfoo()`` to
 | 
					
						
							|  |  |  | initialize it.  You do not link your .exe with foo.lib, as that would cause
 | 
					
						
							|  |  |  | Windows to require the DLL to be present.
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Note that the search path for foo.pyd is PYTHONPATH, not the same as the path
 | 
					
						
							|  |  |  | that Windows uses to search for foo.dll.  Also, foo.pyd need not be present to
 | 
					
						
							|  |  |  | run your program, whereas if you linked your program with a dll, the dll is
 | 
					
						
							|  |  |  | required.  Of course, foo.pyd is required if you want to say ``import foo``.  In
 | 
					
						
							|  |  |  | a DLL, linkage is declared in the source code with ``__declspec(dllexport)``.
 | 
					
						
							|  |  |  | In a .pyd, linkage is defined in a list of available functions.
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | How can I embed Python into a Windows application?
 | 
					
						
							|  |  |  | --------------------------------------------------
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Embedding the Python interpreter in a Windows app can be summarized as follows:
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 1. Do _not_ build Python into your .exe file directly.  On Windows, Python must
 | 
					
						
							|  |  |  |    be a DLL to handle importing modules that are themselves DLL's.  (This is the
 | 
					
						
							| 
									
										
											  
											
												Merged revisions 85572-85573,85606,85609-85622,85624,85626-85627,85629,85631,85633,85635-85636,85638-85639,85641-85642 via svnmerge from
svn+ssh://svn.python.org/python/branches/py3k
........
  r85572 | georg.brandl | 2010-10-16 20:51:05 +0200 (Sa, 16 Okt 2010) | 1 line
  #10122: typo fix.
........
  r85573 | georg.brandl | 2010-10-16 20:53:08 +0200 (Sa, 16 Okt 2010) | 1 line
  #10124: typo fix.
........
  r85606 | georg.brandl | 2010-10-17 08:32:59 +0200 (So, 17 Okt 2010) | 1 line
  #10058: tweak wording about exception returns.
........
  r85609 | georg.brandl | 2010-10-17 11:19:03 +0200 (So, 17 Okt 2010) | 1 line
  #8556: use less confusing mapping key in example.
........
  r85610 | georg.brandl | 2010-10-17 11:23:05 +0200 (So, 17 Okt 2010) | 1 line
  #8686: remove potentially confusing wording that does not add any value.
........
  r85611 | georg.brandl | 2010-10-17 11:33:24 +0200 (So, 17 Okt 2010) | 1 line
  #8811: small fixes to sqlite3 docs.
........
  r85612 | georg.brandl | 2010-10-17 11:37:54 +0200 (So, 17 Okt 2010) | 1 line
  #8855: add shelve security warning.
........
  r85613 | georg.brandl | 2010-10-17 11:43:35 +0200 (So, 17 Okt 2010) | 1 line
  Fix hmac docs: it takes and returns bytes, except for hexdigest().
........
  r85614 | georg.brandl | 2010-10-17 11:46:11 +0200 (So, 17 Okt 2010) | 1 line
  #8968: add actual name of token constants.
........
  r85615 | georg.brandl | 2010-10-17 12:05:13 +0200 (So, 17 Okt 2010) | 1 line
  #459007: merge info from PC/getpathp.c and using/windows.rst to document the forming of sys.path under Windows.
........
  r85616 | georg.brandl | 2010-10-17 12:07:29 +0200 (So, 17 Okt 2010) | 1 line
  Fix copy-paste error in example.
........
  r85617 | georg.brandl | 2010-10-17 12:09:06 +0200 (So, 17 Okt 2010) | 1 line
  #5212: md5 weaknesses do not affect hmac, so remove the note about that.
........
  r85618 | georg.brandl | 2010-10-17 12:14:38 +0200 (So, 17 Okt 2010) | 1 line
  #9086: correct wrong terminology about linking with pythonXY.dll.
........
  r85619 | georg.brandl | 2010-10-17 12:15:50 +0200 (So, 17 Okt 2010) | 1 line
  Make file names consistent.
........
  r85620 | georg.brandl | 2010-10-17 12:22:28 +0200 (So, 17 Okt 2010) | 1 line
  Remove second parser module example; it referred to non-readily-available example files, and this kind of discovery is much better done with the AST nowadays anyway.
........
  r85621 | georg.brandl | 2010-10-17 12:24:54 +0200 (So, 17 Okt 2010) | 1 line
  #9105: move pickle warning to a bit more prominent location.
........
  r85622 | georg.brandl | 2010-10-17 12:28:04 +0200 (So, 17 Okt 2010) | 1 line
  #9112: document error() and exit() methods of ArgumentParser.
........
  r85624 | georg.brandl | 2010-10-17 12:34:28 +0200 (So, 17 Okt 2010) | 1 line
  Some markup and style fixes in argparse docs.
........
  r85626 | georg.brandl | 2010-10-17 12:38:20 +0200 (So, 17 Okt 2010) | 1 line
  #9117: fix syntax for class definition.
........
  r85627 | georg.brandl | 2010-10-17 12:44:11 +0200 (So, 17 Okt 2010) | 1 line
  #9138: reword introduction to classes in Python.
........
  r85629 | georg.brandl | 2010-10-17 12:51:45 +0200 (So, 17 Okt 2010) | 1 line
  #5962: clarify sys.exit() vs. threads.
........
  r85631 | georg.brandl | 2010-10-17 12:53:54 +0200 (So, 17 Okt 2010) | 1 line
  Fix capitalization.
........
  r85633 | georg.brandl | 2010-10-17 12:59:41 +0200 (So, 17 Okt 2010) | 1 line
  #9204: remove mentions of removed types in the types module.
........
  r85635 | georg.brandl | 2010-10-17 13:03:22 +0200 (So, 17 Okt 2010) | 1 line
  #5121: fix claims about default values leading to segfaults.
........
  r85636 | georg.brandl | 2010-10-17 13:06:14 +0200 (So, 17 Okt 2010) | 1 line
  #9237: document sys.call_tracing().
........
  r85638 | georg.brandl | 2010-10-17 13:13:37 +0200 (So, 17 Okt 2010) | 1 line
  Port changes to pickle docs apparently lost in py3k.
........
  r85639 | georg.brandl | 2010-10-17 13:23:56 +0200 (So, 17 Okt 2010) | 1 line
  Make twisted example a bit more logical.
........
  r85641 | georg.brandl | 2010-10-17 13:29:07 +0200 (So, 17 Okt 2010) | 1 line
  Fix documentation of dis.opmap direction.
........
  r85642 | georg.brandl | 2010-10-17 13:36:28 +0200 (So, 17 Okt 2010) | 1 line
  #9730: fix example.
........
											
										 
											2010-11-26 08:49:15 +00:00
										 |  |  |    first key undocumented fact.)  Instead, link to :file:`python{NN}.dll`; it is
 | 
					
						
							|  |  |  |    typically installed in ``C:\Windows\System``.  *NN* is the Python version, a
 | 
					
						
							| 
									
										
										
										
											2009-10-27 20:20:38 +00:00
										 |  |  |    number such as "23" for Python 2.3.
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
											  
											
												Merged revisions 85572-85573,85606,85609-85622,85624,85626-85627,85629,85631,85633,85635-85636,85638-85639,85641-85642 via svnmerge from
svn+ssh://svn.python.org/python/branches/py3k
........
  r85572 | georg.brandl | 2010-10-16 20:51:05 +0200 (Sa, 16 Okt 2010) | 1 line
  #10122: typo fix.
........
  r85573 | georg.brandl | 2010-10-16 20:53:08 +0200 (Sa, 16 Okt 2010) | 1 line
  #10124: typo fix.
........
  r85606 | georg.brandl | 2010-10-17 08:32:59 +0200 (So, 17 Okt 2010) | 1 line
  #10058: tweak wording about exception returns.
........
  r85609 | georg.brandl | 2010-10-17 11:19:03 +0200 (So, 17 Okt 2010) | 1 line
  #8556: use less confusing mapping key in example.
........
  r85610 | georg.brandl | 2010-10-17 11:23:05 +0200 (So, 17 Okt 2010) | 1 line
  #8686: remove potentially confusing wording that does not add any value.
........
  r85611 | georg.brandl | 2010-10-17 11:33:24 +0200 (So, 17 Okt 2010) | 1 line
  #8811: small fixes to sqlite3 docs.
........
  r85612 | georg.brandl | 2010-10-17 11:37:54 +0200 (So, 17 Okt 2010) | 1 line
  #8855: add shelve security warning.
........
  r85613 | georg.brandl | 2010-10-17 11:43:35 +0200 (So, 17 Okt 2010) | 1 line
  Fix hmac docs: it takes and returns bytes, except for hexdigest().
........
  r85614 | georg.brandl | 2010-10-17 11:46:11 +0200 (So, 17 Okt 2010) | 1 line
  #8968: add actual name of token constants.
........
  r85615 | georg.brandl | 2010-10-17 12:05:13 +0200 (So, 17 Okt 2010) | 1 line
  #459007: merge info from PC/getpathp.c and using/windows.rst to document the forming of sys.path under Windows.
........
  r85616 | georg.brandl | 2010-10-17 12:07:29 +0200 (So, 17 Okt 2010) | 1 line
  Fix copy-paste error in example.
........
  r85617 | georg.brandl | 2010-10-17 12:09:06 +0200 (So, 17 Okt 2010) | 1 line
  #5212: md5 weaknesses do not affect hmac, so remove the note about that.
........
  r85618 | georg.brandl | 2010-10-17 12:14:38 +0200 (So, 17 Okt 2010) | 1 line
  #9086: correct wrong terminology about linking with pythonXY.dll.
........
  r85619 | georg.brandl | 2010-10-17 12:15:50 +0200 (So, 17 Okt 2010) | 1 line
  Make file names consistent.
........
  r85620 | georg.brandl | 2010-10-17 12:22:28 +0200 (So, 17 Okt 2010) | 1 line
  Remove second parser module example; it referred to non-readily-available example files, and this kind of discovery is much better done with the AST nowadays anyway.
........
  r85621 | georg.brandl | 2010-10-17 12:24:54 +0200 (So, 17 Okt 2010) | 1 line
  #9105: move pickle warning to a bit more prominent location.
........
  r85622 | georg.brandl | 2010-10-17 12:28:04 +0200 (So, 17 Okt 2010) | 1 line
  #9112: document error() and exit() methods of ArgumentParser.
........
  r85624 | georg.brandl | 2010-10-17 12:34:28 +0200 (So, 17 Okt 2010) | 1 line
  Some markup and style fixes in argparse docs.
........
  r85626 | georg.brandl | 2010-10-17 12:38:20 +0200 (So, 17 Okt 2010) | 1 line
  #9117: fix syntax for class definition.
........
  r85627 | georg.brandl | 2010-10-17 12:44:11 +0200 (So, 17 Okt 2010) | 1 line
  #9138: reword introduction to classes in Python.
........
  r85629 | georg.brandl | 2010-10-17 12:51:45 +0200 (So, 17 Okt 2010) | 1 line
  #5962: clarify sys.exit() vs. threads.
........
  r85631 | georg.brandl | 2010-10-17 12:53:54 +0200 (So, 17 Okt 2010) | 1 line
  Fix capitalization.
........
  r85633 | georg.brandl | 2010-10-17 12:59:41 +0200 (So, 17 Okt 2010) | 1 line
  #9204: remove mentions of removed types in the types module.
........
  r85635 | georg.brandl | 2010-10-17 13:03:22 +0200 (So, 17 Okt 2010) | 1 line
  #5121: fix claims about default values leading to segfaults.
........
  r85636 | georg.brandl | 2010-10-17 13:06:14 +0200 (So, 17 Okt 2010) | 1 line
  #9237: document sys.call_tracing().
........
  r85638 | georg.brandl | 2010-10-17 13:13:37 +0200 (So, 17 Okt 2010) | 1 line
  Port changes to pickle docs apparently lost in py3k.
........
  r85639 | georg.brandl | 2010-10-17 13:23:56 +0200 (So, 17 Okt 2010) | 1 line
  Make twisted example a bit more logical.
........
  r85641 | georg.brandl | 2010-10-17 13:29:07 +0200 (So, 17 Okt 2010) | 1 line
  Fix documentation of dis.opmap direction.
........
  r85642 | georg.brandl | 2010-10-17 13:36:28 +0200 (So, 17 Okt 2010) | 1 line
  #9730: fix example.
........
											
										 
											2010-11-26 08:49:15 +00:00
										 |  |  |    You can link to Python in two different ways.  Load-time linking means
 | 
					
						
							|  |  |  |    linking against :file:`python{NN}.lib`, while run-time linking means linking
 | 
					
						
							|  |  |  |    against :file:`python{NN}.dll`.  (General note: :file:`python{NN}.lib` is the
 | 
					
						
							|  |  |  |    so-called "import lib" corresponding to :file:`python{NN}.dll`.  It merely
 | 
					
						
							|  |  |  |    defines symbols for the linker.)
 | 
					
						
							| 
									
										
										
										
											2009-10-27 20:20:38 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
											  
											
												Merged revisions 85572-85573,85606,85609-85622,85624,85626-85627,85629,85631,85633,85635-85636,85638-85639,85641-85642 via svnmerge from
svn+ssh://svn.python.org/python/branches/py3k
........
  r85572 | georg.brandl | 2010-10-16 20:51:05 +0200 (Sa, 16 Okt 2010) | 1 line
  #10122: typo fix.
........
  r85573 | georg.brandl | 2010-10-16 20:53:08 +0200 (Sa, 16 Okt 2010) | 1 line
  #10124: typo fix.
........
  r85606 | georg.brandl | 2010-10-17 08:32:59 +0200 (So, 17 Okt 2010) | 1 line
  #10058: tweak wording about exception returns.
........
  r85609 | georg.brandl | 2010-10-17 11:19:03 +0200 (So, 17 Okt 2010) | 1 line
  #8556: use less confusing mapping key in example.
........
  r85610 | georg.brandl | 2010-10-17 11:23:05 +0200 (So, 17 Okt 2010) | 1 line
  #8686: remove potentially confusing wording that does not add any value.
........
  r85611 | georg.brandl | 2010-10-17 11:33:24 +0200 (So, 17 Okt 2010) | 1 line
  #8811: small fixes to sqlite3 docs.
........
  r85612 | georg.brandl | 2010-10-17 11:37:54 +0200 (So, 17 Okt 2010) | 1 line
  #8855: add shelve security warning.
........
  r85613 | georg.brandl | 2010-10-17 11:43:35 +0200 (So, 17 Okt 2010) | 1 line
  Fix hmac docs: it takes and returns bytes, except for hexdigest().
........
  r85614 | georg.brandl | 2010-10-17 11:46:11 +0200 (So, 17 Okt 2010) | 1 line
  #8968: add actual name of token constants.
........
  r85615 | georg.brandl | 2010-10-17 12:05:13 +0200 (So, 17 Okt 2010) | 1 line
  #459007: merge info from PC/getpathp.c and using/windows.rst to document the forming of sys.path under Windows.
........
  r85616 | georg.brandl | 2010-10-17 12:07:29 +0200 (So, 17 Okt 2010) | 1 line
  Fix copy-paste error in example.
........
  r85617 | georg.brandl | 2010-10-17 12:09:06 +0200 (So, 17 Okt 2010) | 1 line
  #5212: md5 weaknesses do not affect hmac, so remove the note about that.
........
  r85618 | georg.brandl | 2010-10-17 12:14:38 +0200 (So, 17 Okt 2010) | 1 line
  #9086: correct wrong terminology about linking with pythonXY.dll.
........
  r85619 | georg.brandl | 2010-10-17 12:15:50 +0200 (So, 17 Okt 2010) | 1 line
  Make file names consistent.
........
  r85620 | georg.brandl | 2010-10-17 12:22:28 +0200 (So, 17 Okt 2010) | 1 line
  Remove second parser module example; it referred to non-readily-available example files, and this kind of discovery is much better done with the AST nowadays anyway.
........
  r85621 | georg.brandl | 2010-10-17 12:24:54 +0200 (So, 17 Okt 2010) | 1 line
  #9105: move pickle warning to a bit more prominent location.
........
  r85622 | georg.brandl | 2010-10-17 12:28:04 +0200 (So, 17 Okt 2010) | 1 line
  #9112: document error() and exit() methods of ArgumentParser.
........
  r85624 | georg.brandl | 2010-10-17 12:34:28 +0200 (So, 17 Okt 2010) | 1 line
  Some markup and style fixes in argparse docs.
........
  r85626 | georg.brandl | 2010-10-17 12:38:20 +0200 (So, 17 Okt 2010) | 1 line
  #9117: fix syntax for class definition.
........
  r85627 | georg.brandl | 2010-10-17 12:44:11 +0200 (So, 17 Okt 2010) | 1 line
  #9138: reword introduction to classes in Python.
........
  r85629 | georg.brandl | 2010-10-17 12:51:45 +0200 (So, 17 Okt 2010) | 1 line
  #5962: clarify sys.exit() vs. threads.
........
  r85631 | georg.brandl | 2010-10-17 12:53:54 +0200 (So, 17 Okt 2010) | 1 line
  Fix capitalization.
........
  r85633 | georg.brandl | 2010-10-17 12:59:41 +0200 (So, 17 Okt 2010) | 1 line
  #9204: remove mentions of removed types in the types module.
........
  r85635 | georg.brandl | 2010-10-17 13:03:22 +0200 (So, 17 Okt 2010) | 1 line
  #5121: fix claims about default values leading to segfaults.
........
  r85636 | georg.brandl | 2010-10-17 13:06:14 +0200 (So, 17 Okt 2010) | 1 line
  #9237: document sys.call_tracing().
........
  r85638 | georg.brandl | 2010-10-17 13:13:37 +0200 (So, 17 Okt 2010) | 1 line
  Port changes to pickle docs apparently lost in py3k.
........
  r85639 | georg.brandl | 2010-10-17 13:23:56 +0200 (So, 17 Okt 2010) | 1 line
  Make twisted example a bit more logical.
........
  r85641 | georg.brandl | 2010-10-17 13:29:07 +0200 (So, 17 Okt 2010) | 1 line
  Fix documentation of dis.opmap direction.
........
  r85642 | georg.brandl | 2010-10-17 13:36:28 +0200 (So, 17 Okt 2010) | 1 line
  #9730: fix example.
........
											
										 
											2010-11-26 08:49:15 +00:00
										 |  |  |    Run-time linking greatly simplifies link options; everything happens at run
 | 
					
						
							|  |  |  |    time.  Your code must load :file:`python{NN}.dll` using the Windows
 | 
					
						
							| 
									
										
										
										
											2009-10-27 20:20:38 +00:00
										 |  |  |    ``LoadLibraryEx()`` routine.  The code must also use access routines and data
 | 
					
						
							|  |  |  |    in :file:`python{NN}.dll` (that is, Python's C API's) using pointers obtained
 | 
					
						
							|  |  |  |    by the Windows ``GetProcAddress()`` routine.  Macros can make using these
 | 
					
						
							|  |  |  |    pointers transparent to any C code that calls routines in Python's C API.
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |    Borland note: convert :file:`python{NN}.lib` to OMF format using Coff2Omf.exe
 | 
					
						
							|  |  |  |    first.
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
											  
											
												Merged revisions 85572-85573,85606,85609-85622,85624,85626-85627,85629,85631,85633,85635-85636,85638-85639,85641-85642 via svnmerge from
svn+ssh://svn.python.org/python/branches/py3k
........
  r85572 | georg.brandl | 2010-10-16 20:51:05 +0200 (Sa, 16 Okt 2010) | 1 line
  #10122: typo fix.
........
  r85573 | georg.brandl | 2010-10-16 20:53:08 +0200 (Sa, 16 Okt 2010) | 1 line
  #10124: typo fix.
........
  r85606 | georg.brandl | 2010-10-17 08:32:59 +0200 (So, 17 Okt 2010) | 1 line
  #10058: tweak wording about exception returns.
........
  r85609 | georg.brandl | 2010-10-17 11:19:03 +0200 (So, 17 Okt 2010) | 1 line
  #8556: use less confusing mapping key in example.
........
  r85610 | georg.brandl | 2010-10-17 11:23:05 +0200 (So, 17 Okt 2010) | 1 line
  #8686: remove potentially confusing wording that does not add any value.
........
  r85611 | georg.brandl | 2010-10-17 11:33:24 +0200 (So, 17 Okt 2010) | 1 line
  #8811: small fixes to sqlite3 docs.
........
  r85612 | georg.brandl | 2010-10-17 11:37:54 +0200 (So, 17 Okt 2010) | 1 line
  #8855: add shelve security warning.
........
  r85613 | georg.brandl | 2010-10-17 11:43:35 +0200 (So, 17 Okt 2010) | 1 line
  Fix hmac docs: it takes and returns bytes, except for hexdigest().
........
  r85614 | georg.brandl | 2010-10-17 11:46:11 +0200 (So, 17 Okt 2010) | 1 line
  #8968: add actual name of token constants.
........
  r85615 | georg.brandl | 2010-10-17 12:05:13 +0200 (So, 17 Okt 2010) | 1 line
  #459007: merge info from PC/getpathp.c and using/windows.rst to document the forming of sys.path under Windows.
........
  r85616 | georg.brandl | 2010-10-17 12:07:29 +0200 (So, 17 Okt 2010) | 1 line
  Fix copy-paste error in example.
........
  r85617 | georg.brandl | 2010-10-17 12:09:06 +0200 (So, 17 Okt 2010) | 1 line
  #5212: md5 weaknesses do not affect hmac, so remove the note about that.
........
  r85618 | georg.brandl | 2010-10-17 12:14:38 +0200 (So, 17 Okt 2010) | 1 line
  #9086: correct wrong terminology about linking with pythonXY.dll.
........
  r85619 | georg.brandl | 2010-10-17 12:15:50 +0200 (So, 17 Okt 2010) | 1 line
  Make file names consistent.
........
  r85620 | georg.brandl | 2010-10-17 12:22:28 +0200 (So, 17 Okt 2010) | 1 line
  Remove second parser module example; it referred to non-readily-available example files, and this kind of discovery is much better done with the AST nowadays anyway.
........
  r85621 | georg.brandl | 2010-10-17 12:24:54 +0200 (So, 17 Okt 2010) | 1 line
  #9105: move pickle warning to a bit more prominent location.
........
  r85622 | georg.brandl | 2010-10-17 12:28:04 +0200 (So, 17 Okt 2010) | 1 line
  #9112: document error() and exit() methods of ArgumentParser.
........
  r85624 | georg.brandl | 2010-10-17 12:34:28 +0200 (So, 17 Okt 2010) | 1 line
  Some markup and style fixes in argparse docs.
........
  r85626 | georg.brandl | 2010-10-17 12:38:20 +0200 (So, 17 Okt 2010) | 1 line
  #9117: fix syntax for class definition.
........
  r85627 | georg.brandl | 2010-10-17 12:44:11 +0200 (So, 17 Okt 2010) | 1 line
  #9138: reword introduction to classes in Python.
........
  r85629 | georg.brandl | 2010-10-17 12:51:45 +0200 (So, 17 Okt 2010) | 1 line
  #5962: clarify sys.exit() vs. threads.
........
  r85631 | georg.brandl | 2010-10-17 12:53:54 +0200 (So, 17 Okt 2010) | 1 line
  Fix capitalization.
........
  r85633 | georg.brandl | 2010-10-17 12:59:41 +0200 (So, 17 Okt 2010) | 1 line
  #9204: remove mentions of removed types in the types module.
........
  r85635 | georg.brandl | 2010-10-17 13:03:22 +0200 (So, 17 Okt 2010) | 1 line
  #5121: fix claims about default values leading to segfaults.
........
  r85636 | georg.brandl | 2010-10-17 13:06:14 +0200 (So, 17 Okt 2010) | 1 line
  #9237: document sys.call_tracing().
........
  r85638 | georg.brandl | 2010-10-17 13:13:37 +0200 (So, 17 Okt 2010) | 1 line
  Port changes to pickle docs apparently lost in py3k.
........
  r85639 | georg.brandl | 2010-10-17 13:23:56 +0200 (So, 17 Okt 2010) | 1 line
  Make twisted example a bit more logical.
........
  r85641 | georg.brandl | 2010-10-17 13:29:07 +0200 (So, 17 Okt 2010) | 1 line
  Fix documentation of dis.opmap direction.
........
  r85642 | georg.brandl | 2010-10-17 13:36:28 +0200 (So, 17 Okt 2010) | 1 line
  #9730: fix example.
........
											
										 
											2010-11-26 08:49:15 +00:00
										 |  |  |    .. XXX what about static linking?
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-10-27 20:20:38 +00:00
										 |  |  | 2. If you use SWIG, it is easy to create a Python "extension module" that will
 | 
					
						
							|  |  |  |    make the app's data and methods available to Python.  SWIG will handle just
 | 
					
						
							|  |  |  |    about all the grungy details for you.  The result is C code that you link
 | 
					
						
							|  |  |  |    *into* your .exe file (!)  You do _not_ have to create a DLL file, and this
 | 
					
						
							|  |  |  |    also simplifies linking.
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 3. SWIG will create an init function (a C function) whose name depends on the
 | 
					
						
							|  |  |  |    name of the extension module.  For example, if the name of the module is leo,
 | 
					
						
							|  |  |  |    the init function will be called initleo().  If you use SWIG shadow classes,
 | 
					
						
							|  |  |  |    as you should, the init function will be called initleoc().  This initializes
 | 
					
						
							|  |  |  |    a mostly hidden helper class used by the shadow class.
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |    The reason you can link the C code in step 2 into your .exe file is that
 | 
					
						
							|  |  |  |    calling the initialization function is equivalent to importing the module
 | 
					
						
							|  |  |  |    into Python! (This is the second key undocumented fact.)
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 4. In short, you can use the following code to initialize the Python interpreter
 | 
					
						
							|  |  |  |    with your extension module.
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |    .. code-block:: c
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       #include "python.h"
 | 
					
						
							|  |  |  |       ...
 | 
					
						
							|  |  |  |       Py_Initialize();  // Initialize Python.
 | 
					
						
							|  |  |  |       initmyAppc();  // Initialize (import) the helper class.
 | 
					
						
							|  |  |  |       PyRun_SimpleString("import myApp") ;  // Import the shadow class.
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 5. There are two problems with Python's C API which will become apparent if you
 | 
					
						
							|  |  |  |    use a compiler other than MSVC, the compiler used to build pythonNN.dll.
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |    Problem 1: The so-called "Very High Level" functions that take FILE *
 | 
					
						
							|  |  |  |    arguments will not work in a multi-compiler environment because each
 | 
					
						
							|  |  |  |    compiler's notion of a struct FILE will be different.  From an implementation
 | 
					
						
							|  |  |  |    standpoint these are very _low_ level functions.
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |    Problem 2: SWIG generates the following code when generating wrappers to void
 | 
					
						
							|  |  |  |    functions:
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |    .. code-block:: c
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       Py_INCREF(Py_None);
 | 
					
						
							|  |  |  |       _resultobj = Py_None;
 | 
					
						
							|  |  |  |       return _resultobj;
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |    Alas, Py_None is a macro that expands to a reference to a complex data
 | 
					
						
							|  |  |  |    structure called _Py_NoneStruct inside pythonNN.dll.  Again, this code will
 | 
					
						
							|  |  |  |    fail in a mult-compiler environment.  Replace such code by:
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |    .. code-block:: c
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       return Py_BuildValue("");
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |    It may be possible to use SWIG's ``%typemap`` command to make the change
 | 
					
						
							|  |  |  |    automatically, though I have not been able to get this to work (I'm a
 | 
					
						
							|  |  |  |    complete SWIG newbie).
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 6. Using a Python shell script to put up a Python interpreter window from inside
 | 
					
						
							|  |  |  |    your Windows app is not a good idea; the resulting window will be independent
 | 
					
						
							|  |  |  |    of your app's windowing system.  Rather, you (or the wxPythonWindow class)
 | 
					
						
							|  |  |  |    should create a "native" interpreter window.  It is easy to connect that
 | 
					
						
							|  |  |  |    window to the Python interpreter.  You can redirect Python's i/o to _any_
 | 
					
						
							|  |  |  |    object that supports read and write, so all you need is a Python object
 | 
					
						
							|  |  |  |    (defined in your extension module) that contains read() and write() methods.
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | How do I use Python for CGI?
 | 
					
						
							|  |  |  | ----------------------------
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | On the Microsoft IIS server or on the Win95 MS Personal Web Server you set up
 | 
					
						
							|  |  |  | Python in the same way that you would set up any other scripting engine.
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Run regedt32 and go to::
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W3SVC\Parameters\ScriptMap
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | and enter the following line (making any specific changes that your system may
 | 
					
						
							|  |  |  | need)::
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     .py :REG_SZ: c:\<path to python>\python.exe -u %s %s
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | This line will allow you to call your script with a simple reference like:
 | 
					
						
							| 
									
										
											  
											
												Merged revisions 75797 via svnmerge from
svn+ssh://svn.python.org/python/branches/py3k
................
  r75797 | georg.brandl | 2009-10-27 16:28:25 +0100 (Di, 27 Okt 2009) | 129 lines
  Merged revisions 75365,75394,75402-75403,75418,75459,75484,75592-75596,75600,75602-75607,75610-75613,75616-75617,75623,75627,75640,75647,75696,75795 via svnmerge from
  svn+ssh://pythondev@svn.python.org/python/trunk
  ........
    r75365 | georg.brandl | 2009-10-11 22:16:16 +0200 (So, 11 Okt 2009) | 1 line
    Fix broken links found by "make linkcheck".  scipy.org seems to be done right now, so I could not verify links going there.
  ........
    r75394 | georg.brandl | 2009-10-13 20:10:59 +0200 (Di, 13 Okt 2009) | 1 line
    Fix markup.
  ........
    r75402 | georg.brandl | 2009-10-14 17:51:48 +0200 (Mi, 14 Okt 2009) | 1 line
    #7125: fix typo.
  ........
    r75403 | georg.brandl | 2009-10-14 17:57:46 +0200 (Mi, 14 Okt 2009) | 1 line
    #7126: os.environ changes *do* take effect in subprocesses started with os.system().
  ........
    r75418 | georg.brandl | 2009-10-14 20:48:32 +0200 (Mi, 14 Okt 2009) | 1 line
    #7116: str.join() takes an iterable.
  ........
    r75459 | georg.brandl | 2009-10-17 10:57:43 +0200 (Sa, 17 Okt 2009) | 1 line
    Fix refleaks in _ctypes PyCSimpleType_New, which fixes the refleak seen in test___all__.
  ........
    r75484 | georg.brandl | 2009-10-18 09:58:12 +0200 (So, 18 Okt 2009) | 1 line
    Fix missing word.
  ........
    r75592 | georg.brandl | 2009-10-22 09:05:48 +0200 (Do, 22 Okt 2009) | 1 line
    Fix punctuation.
  ........
    r75593 | georg.brandl | 2009-10-22 09:06:49 +0200 (Do, 22 Okt 2009) | 1 line
    Revert unintended change.
  ........
    r75594 | georg.brandl | 2009-10-22 09:56:02 +0200 (Do, 22 Okt 2009) | 1 line
    Fix markup.
  ........
    r75595 | georg.brandl | 2009-10-22 09:56:56 +0200 (Do, 22 Okt 2009) | 1 line
    Fix duplicate target.
  ........
    r75596 | georg.brandl | 2009-10-22 10:05:04 +0200 (Do, 22 Okt 2009) | 1 line
    Add a new directive marking up implementation details and start using it.
  ........
    r75600 | georg.brandl | 2009-10-22 13:01:46 +0200 (Do, 22 Okt 2009) | 1 line
    Make it more robust.
  ........
    r75602 | georg.brandl | 2009-10-22 13:28:06 +0200 (Do, 22 Okt 2009) | 1 line
    Document new directive.
  ........
    r75603 | georg.brandl | 2009-10-22 13:28:23 +0200 (Do, 22 Okt 2009) | 1 line
    Allow short form with text as argument.
  ........
    r75604 | georg.brandl | 2009-10-22 13:36:50 +0200 (Do, 22 Okt 2009) | 1 line
    Fix stylesheet for multi-paragraph impl-details.
  ........
    r75605 | georg.brandl | 2009-10-22 13:48:10 +0200 (Do, 22 Okt 2009) | 1 line
    Use "impl-detail" directive where applicable.
  ........
    r75606 | georg.brandl | 2009-10-22 17:00:06 +0200 (Do, 22 Okt 2009) | 1 line
    #6324: membership test tries iteration via __iter__.
  ........
    r75607 | georg.brandl | 2009-10-22 17:04:09 +0200 (Do, 22 Okt 2009) | 1 line
    #7088: document new functions in signal as Unix-only.
  ........
    r75610 | georg.brandl | 2009-10-22 17:27:24 +0200 (Do, 22 Okt 2009) | 1 line
    Reorder __slots__ fine print and add a clarification.
  ........
    r75611 | georg.brandl | 2009-10-22 17:42:32 +0200 (Do, 22 Okt 2009) | 1 line
    #7035: improve docs of the various <method>_errors() functions, and give them docstrings.
  ........
    r75612 | georg.brandl | 2009-10-22 17:52:15 +0200 (Do, 22 Okt 2009) | 1 line
    #7156: document curses as Unix-only.
  ........
    r75613 | georg.brandl | 2009-10-22 17:54:35 +0200 (Do, 22 Okt 2009) | 1 line
    #6977: getopt does not support optional option arguments.
  ........
    r75616 | georg.brandl | 2009-10-22 18:17:05 +0200 (Do, 22 Okt 2009) | 1 line
    Add proper references.
  ........
    r75617 | georg.brandl | 2009-10-22 18:20:55 +0200 (Do, 22 Okt 2009) | 1 line
    Make printout margin important.
  ........
    r75623 | georg.brandl | 2009-10-23 10:14:44 +0200 (Fr, 23 Okt 2009) | 1 line
    #7188: fix optionxform() docs.
  ........
    r75627 | fred.drake | 2009-10-23 15:04:51 +0200 (Fr, 23 Okt 2009) | 2 lines
    add further note about what's passed to optionxform
  ........
    r75640 | neil.schemenauer | 2009-10-23 21:58:17 +0200 (Fr, 23 Okt 2009) | 2 lines
    Improve some docstrings in the 'warnings' module.
  ........
    r75647 | georg.brandl | 2009-10-24 12:04:19 +0200 (Sa, 24 Okt 2009) | 1 line
    Fix markup.
  ........
    r75696 | georg.brandl | 2009-10-25 21:25:43 +0100 (So, 25 Okt 2009) | 1 line
    Fix a demo.
  ........
    r75795 | georg.brandl | 2009-10-27 16:10:22 +0100 (Di, 27 Okt 2009) | 1 line
    Fix a strange mis-edit.
  ........
................
											
										 
											2009-10-27 20:24:45 +00:00
										 |  |  | ``http://yourserver/scripts/yourscript.py`` provided "scripts" is an
 | 
					
						
							|  |  |  | "executable" directory for your server (which it usually is by default).  The
 | 
					
						
							|  |  |  | :option:`-u` flag specifies unbuffered and binary mode for stdin - needed when
 | 
					
						
							|  |  |  | working with binary data.
 | 
					
						
							| 
									
										
										
										
											2009-10-27 20:20:38 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | In addition, it is recommended that using ".py" may not be a good idea for the
 | 
					
						
							|  |  |  | file extensions when used in this context (you might want to reserve ``*.py``
 | 
					
						
							|  |  |  | for support modules and use ``*.cgi`` or ``*.cgp`` for "main program" scripts).
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | In order to set up Internet Information Services 5 to use Python for CGI
 | 
					
						
							|  |  |  | processing, please see the following links:
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |    http://www.e-coli.net/pyiis_server.html (for Win2k Server)
 | 
					
						
							|  |  |  |    http://www.e-coli.net/pyiis.html (for Win2k pro)
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Configuring Apache is much simpler.  In the Apache configuration file
 | 
					
						
							|  |  |  | ``httpd.conf``, add the following line at the end of the file::
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     ScriptInterpreterSource Registry
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Then, give your Python CGI-scripts the extension .py and put them in the cgi-bin
 | 
					
						
							|  |  |  | directory.
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | How do I keep editors from inserting tabs into my Python source?
 | 
					
						
							|  |  |  | ----------------------------------------------------------------
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | The FAQ does not recommend using tabs, and the Python style guide, :pep:`8`,
 | 
					
						
							|  |  |  | recommends 4 spaces for distributed Python code; this is also the Emacs
 | 
					
						
							|  |  |  | python-mode default.
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Under any editor, mixing tabs and spaces is a bad idea.  MSVC is no different in
 | 
					
						
							|  |  |  | this respect, and is easily configured to use spaces: Take :menuselection:`Tools
 | 
					
						
							|  |  |  | --> Options --> Tabs`, and for file type "Default" set "Tab size" and "Indent
 | 
					
						
							|  |  |  | size" to 4, and select the "Insert spaces" radio button.
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | If you suspect mixed tabs and spaces are causing problems in leading whitespace,
 | 
					
						
							|  |  |  | run Python with the :option:`-t` switch or run ``Tools/Scripts/tabnanny.py`` to
 | 
					
						
							|  |  |  | check a directory tree in batch mode.
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | How do I check for a keypress without blocking?
 | 
					
						
							|  |  |  | -----------------------------------------------
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Use the msvcrt module.  This is a standard Windows-specific extension module.
 | 
					
						
							|  |  |  | It defines a function ``kbhit()`` which checks whether a keyboard hit is
 | 
					
						
							|  |  |  | present, and ``getch()`` which gets one character without echoing it.
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | How do I emulate os.kill() in Windows?
 | 
					
						
							|  |  |  | --------------------------------------
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
											  
											
												Merged revisions 78959,79170,79175,79177,79180,79183,79186,79193,79581 via svnmerge from
svn+ssh://svn.python.org/python/branches/py3k
................
  r78959 | georg.brandl | 2010-03-14 11:56:14 +0100 (So, 14 Mär 2010) | 33 lines
  Merged revisions 78760,78771-78773,78802,78922,78952 via svnmerge from
  svn+ssh://pythondev@svn.python.org/python/trunk
  ........
    r78760 | georg.brandl | 2010-03-07 16:23:59 +0100 (So, 07 Mär 2010) | 1 line
    #5341: more built-in vs builtin fixes.
  ........
    r78771 | georg.brandl | 2010-03-07 21:58:31 +0100 (So, 07 Mär 2010) | 1 line
    #8085: The function is called PyObject_NewVar, not PyObject_VarNew.
  ........
    r78772 | georg.brandl | 2010-03-07 22:12:28 +0100 (So, 07 Mär 2010) | 1 line
    #8039: document conditional expressions better, giving them their own section.
  ........
    r78773 | georg.brandl | 2010-03-07 22:32:06 +0100 (So, 07 Mär 2010) | 1 line
    #8044: document Py_{Enter,Leave}RecursiveCall functions.
  ........
    r78802 | georg.brandl | 2010-03-08 17:28:40 +0100 (Mo, 08 Mär 2010) | 1 line
    Fix typo.
  ........
    r78922 | georg.brandl | 2010-03-13 14:41:58 +0100 (Sa, 13 Mär 2010) | 1 line
    Update for new download location.
  ........
    r78952 | georg.brandl | 2010-03-14 10:55:08 +0100 (So, 14 Mär 2010) | 1 line
    #8137: add iso-8859-16 to the standard encodings table.
  ........
................
  r79170 | georg.brandl | 2010-03-21 10:02:59 +0100 (So, 21 Mär 2010) | 1 line
  Fix some issues found by Jacques Ducasse on the docs list.
................
  r79175 | georg.brandl | 2010-03-21 10:10:32 +0100 (So, 21 Mär 2010) | 9 lines
  Merged revisions 79172 via svnmerge from
  svn+ssh://pythondev@svn.python.org/python/trunk
  ........
    r79172 | georg.brandl | 2010-03-21 10:08:00 +0100 (So, 21 Mär 2010) | 1 line
    Add a paragraph about set displays.
  ........
................
  r79177 | georg.brandl | 2010-03-21 10:25:54 +0100 (So, 21 Mär 2010) | 1 line
  Need to use list(range()) to get a list.
................
  r79180 | georg.brandl | 2010-03-21 10:50:49 +0100 (So, 21 Mär 2010) | 9 lines
  Merged revisions 79178 via svnmerge from
  svn+ssh://pythondev@svn.python.org/python/trunk
  ........
    r79178 | georg.brandl | 2010-03-21 10:28:16 +0100 (So, 21 Mär 2010) | 1 line
    Clarify that for shell=True, the shell PID will be the child PID.
  ........
................
  r79183 | georg.brandl | 2010-03-21 10:52:24 +0100 (So, 21 Mär 2010) | 9 lines
  Merged revisions 79181 via svnmerge from
  svn+ssh://pythondev@svn.python.org/python/trunk
  ........
    r79181 | georg.brandl | 2010-03-21 10:51:16 +0100 (So, 21 Mär 2010) | 1 line
    Update os.kill() emulation example for Windows to use ctypes.
  ........
................
  r79186 | georg.brandl | 2010-03-21 11:03:36 +0100 (So, 21 Mär 2010) | 13 lines
  Merged revisions 79184-79185 via svnmerge from
  svn+ssh://pythondev@svn.python.org/python/trunk
  ........
    r79184 | georg.brandl | 2010-03-21 10:58:36 +0100 (So, 21 Mär 2010) | 1 line
    Update text for newest US DST regulation.  The sample file already has the calculation right.
  ........
    r79185 | georg.brandl | 2010-03-21 11:02:47 +0100 (So, 21 Mär 2010) | 1 line
    Include structmember.h correctly.
  ........
................
  r79193 | georg.brandl | 2010-03-21 12:53:50 +0100 (So, 21 Mär 2010) | 9 lines
  Merged revisions 79192 via svnmerge from
  svn+ssh://pythondev@svn.python.org/python/trunk
  ........
    r79192 | georg.brandl | 2010-03-21 12:50:58 +0100 (So, 21 Mär 2010) | 1 line
    Remove leftover word.
  ........
................
  r79581 | georg.brandl | 2010-04-02 10:47:07 +0200 (Fr, 02 Apr 2010) | 1 line
  #8213: document behavior of -u on py3k better.
................
											
										 
											2010-10-06 07:59:52 +00:00
										 |  |  | To terminate a process, you can use ctypes::
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |    import ctypes
 | 
					
						
							| 
									
										
										
										
											2009-10-27 20:20:38 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |    def kill(pid):
 | 
					
						
							|  |  |  |        """kill function for Win32"""
 | 
					
						
							| 
									
										
											  
											
												Merged revisions 78959,79170,79175,79177,79180,79183,79186,79193,79581 via svnmerge from
svn+ssh://svn.python.org/python/branches/py3k
................
  r78959 | georg.brandl | 2010-03-14 11:56:14 +0100 (So, 14 Mär 2010) | 33 lines
  Merged revisions 78760,78771-78773,78802,78922,78952 via svnmerge from
  svn+ssh://pythondev@svn.python.org/python/trunk
  ........
    r78760 | georg.brandl | 2010-03-07 16:23:59 +0100 (So, 07 Mär 2010) | 1 line
    #5341: more built-in vs builtin fixes.
  ........
    r78771 | georg.brandl | 2010-03-07 21:58:31 +0100 (So, 07 Mär 2010) | 1 line
    #8085: The function is called PyObject_NewVar, not PyObject_VarNew.
  ........
    r78772 | georg.brandl | 2010-03-07 22:12:28 +0100 (So, 07 Mär 2010) | 1 line
    #8039: document conditional expressions better, giving them their own section.
  ........
    r78773 | georg.brandl | 2010-03-07 22:32:06 +0100 (So, 07 Mär 2010) | 1 line
    #8044: document Py_{Enter,Leave}RecursiveCall functions.
  ........
    r78802 | georg.brandl | 2010-03-08 17:28:40 +0100 (Mo, 08 Mär 2010) | 1 line
    Fix typo.
  ........
    r78922 | georg.brandl | 2010-03-13 14:41:58 +0100 (Sa, 13 Mär 2010) | 1 line
    Update for new download location.
  ........
    r78952 | georg.brandl | 2010-03-14 10:55:08 +0100 (So, 14 Mär 2010) | 1 line
    #8137: add iso-8859-16 to the standard encodings table.
  ........
................
  r79170 | georg.brandl | 2010-03-21 10:02:59 +0100 (So, 21 Mär 2010) | 1 line
  Fix some issues found by Jacques Ducasse on the docs list.
................
  r79175 | georg.brandl | 2010-03-21 10:10:32 +0100 (So, 21 Mär 2010) | 9 lines
  Merged revisions 79172 via svnmerge from
  svn+ssh://pythondev@svn.python.org/python/trunk
  ........
    r79172 | georg.brandl | 2010-03-21 10:08:00 +0100 (So, 21 Mär 2010) | 1 line
    Add a paragraph about set displays.
  ........
................
  r79177 | georg.brandl | 2010-03-21 10:25:54 +0100 (So, 21 Mär 2010) | 1 line
  Need to use list(range()) to get a list.
................
  r79180 | georg.brandl | 2010-03-21 10:50:49 +0100 (So, 21 Mär 2010) | 9 lines
  Merged revisions 79178 via svnmerge from
  svn+ssh://pythondev@svn.python.org/python/trunk
  ........
    r79178 | georg.brandl | 2010-03-21 10:28:16 +0100 (So, 21 Mär 2010) | 1 line
    Clarify that for shell=True, the shell PID will be the child PID.
  ........
................
  r79183 | georg.brandl | 2010-03-21 10:52:24 +0100 (So, 21 Mär 2010) | 9 lines
  Merged revisions 79181 via svnmerge from
  svn+ssh://pythondev@svn.python.org/python/trunk
  ........
    r79181 | georg.brandl | 2010-03-21 10:51:16 +0100 (So, 21 Mär 2010) | 1 line
    Update os.kill() emulation example for Windows to use ctypes.
  ........
................
  r79186 | georg.brandl | 2010-03-21 11:03:36 +0100 (So, 21 Mär 2010) | 13 lines
  Merged revisions 79184-79185 via svnmerge from
  svn+ssh://pythondev@svn.python.org/python/trunk
  ........
    r79184 | georg.brandl | 2010-03-21 10:58:36 +0100 (So, 21 Mär 2010) | 1 line
    Update text for newest US DST regulation.  The sample file already has the calculation right.
  ........
    r79185 | georg.brandl | 2010-03-21 11:02:47 +0100 (So, 21 Mär 2010) | 1 line
    Include structmember.h correctly.
  ........
................
  r79193 | georg.brandl | 2010-03-21 12:53:50 +0100 (So, 21 Mär 2010) | 9 lines
  Merged revisions 79192 via svnmerge from
  svn+ssh://pythondev@svn.python.org/python/trunk
  ........
    r79192 | georg.brandl | 2010-03-21 12:50:58 +0100 (So, 21 Mär 2010) | 1 line
    Remove leftover word.
  ........
................
  r79581 | georg.brandl | 2010-04-02 10:47:07 +0200 (Fr, 02 Apr 2010) | 1 line
  #8213: document behavior of -u on py3k better.
................
											
										 
											2010-10-06 07:59:52 +00:00
										 |  |  |        kernel32 = ctypes.windll.kernel32
 | 
					
						
							|  |  |  |        handle = kernel32.OpenProcess(1, 0, pid)
 | 
					
						
							|  |  |  |        return (0 != kernel32.TerminateProcess(handle, 0))
 | 
					
						
							| 
									
										
										
										
											2009-10-27 20:20:38 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Why does os.path.isdir() fail on NT shared directories?
 | 
					
						
							|  |  |  | -------------------------------------------------------
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | The solution appears to be always append the "\\" on the end of shared
 | 
					
						
							|  |  |  | drives.
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |    >>> import os
 | 
					
						
							|  |  |  |    >>> os.path.isdir( '\\\\rorschach\\public')
 | 
					
						
							|  |  |  |    0
 | 
					
						
							|  |  |  |    >>> os.path.isdir( '\\\\rorschach\\public\\')
 | 
					
						
							|  |  |  |    1
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | It helps to think of share points as being like drive letters.  Example::
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |    k: is not a directory
 | 
					
						
							|  |  |  |    k:\ is a directory
 | 
					
						
							|  |  |  |    k:\media is a directory
 | 
					
						
							|  |  |  |    k:\media\ is not a directory
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | The same rules apply if you substitute "k:" with "\\conky\foo"::
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |    \\conky\foo  is not a directory
 | 
					
						
							|  |  |  |    \\conky\foo\ is a directory
 | 
					
						
							|  |  |  |    \\conky\foo\media is a directory
 | 
					
						
							|  |  |  |    \\conky\foo\media\ is not a directory
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | cgi.py (or other CGI programming) doesn't work sometimes on NT or win95!
 | 
					
						
							|  |  |  | ------------------------------------------------------------------------
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Be sure you have the latest python.exe, that you are using python.exe rather
 | 
					
						
							|  |  |  | than a GUI version of Python and that you have configured the server to execute
 | 
					
						
							|  |  |  | ::
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |    "...\python.exe -u ..."
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | for the CGI execution.  The :option:`-u` (unbuffered) option on NT and Win95
 | 
					
						
							|  |  |  | prevents the interpreter from altering newlines in the standard input and
 | 
					
						
							|  |  |  | output.  Without it post/multipart requests will seem to have the wrong length
 | 
					
						
							|  |  |  | and binary (e.g. GIF) responses may get garbled (resulting in broken images, PDF
 | 
					
						
							|  |  |  | files, and other binary downloads failing).
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Why doesn't os.popen() work in PythonWin on NT?
 | 
					
						
							|  |  |  | -----------------------------------------------
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | The reason that os.popen() doesn't work from within PythonWin is due to a bug in
 | 
					
						
							|  |  |  | Microsoft's C Runtime Library (CRT). The CRT assumes you have a Win32 console
 | 
					
						
							|  |  |  | attached to the process.
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | You should use the win32pipe module's popen() instead which doesn't depend on
 | 
					
						
							|  |  |  | having an attached Win32 console.
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Example::
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |    import win32pipe
 | 
					
						
							|  |  |  |    f = win32pipe.popen('dir /c c:\\')
 | 
					
						
							| 
									
										
											  
											
												Merged revisions 76884-76885,76887,76889-76890,76895 via svnmerge from
svn+ssh://svn.python.org/python/branches/py3k
................
  r76884 | georg.brandl | 2009-12-19 18:35:49 +0100 (Sa, 19 Dez 2009) | 9 lines
  Merged revisions 76883 via svnmerge from
  svn+ssh://pythondev@svn.python.org/python/trunk
  ........
    r76883 | georg.brandl | 2009-12-19 18:34:32 +0100 (Sa, 19 Dez 2009) | 1 line
    #7521: remove Py_GetBuildNumber(), which was removed in favor of Py_GetBuildInfo().
  ........
................
  r76885 | georg.brandl | 2009-12-19 18:36:20 +0100 (Sa, 19 Dez 2009) | 1 line
  #7521: remove PyEval_GetRestricted() from the docs.
................
  r76887 | georg.brandl | 2009-12-19 18:46:40 +0100 (Sa, 19 Dez 2009) | 9 lines
  Recorded merge of revisions 76886 via svnmerge from
  svn+ssh://pythondev@svn.python.org/python/trunk
  ........
    r76886 | georg.brandl | 2009-12-19 18:43:33 +0100 (Sa, 19 Dez 2009) | 1 line
    #7493: review of Design FAQ by Florent Xicluna.
  ........
................
  r76889 | georg.brandl | 2009-12-19 18:57:51 +0100 (Sa, 19 Dez 2009) | 1 line
  #7499: Review of Library FAQ by Florent Xicluna.
................
  r76890 | georg.brandl | 2009-12-19 18:59:59 +0100 (Sa, 19 Dez 2009) | 1 line
  #7500: add "Python 3 review needed" comments and fix a few obvious errors.
................
  r76895 | georg.brandl | 2009-12-19 19:23:28 +0100 (Sa, 19 Dez 2009) | 1 line
  #7380: Fix some str/bytearray/bytes issues in uuid docs and implementation.
................
											
										 
											2010-10-06 07:12:17 +00:00
										 |  |  |    print(f.readlines())
 | 
					
						
							| 
									
										
										
										
											2009-10-27 20:20:38 +00:00
										 |  |  |    f.close()
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Why doesn't os.popen()/win32pipe.popen() work on Win9x?
 | 
					
						
							|  |  |  | -------------------------------------------------------
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | There is a bug in Win9x that prevents os.popen/win32pipe.popen* from
 | 
					
						
							|  |  |  | working. The good news is there is a way to work around this problem.  The
 | 
					
						
							|  |  |  | Microsoft Knowledge Base article that you need to lookup is: Q150956. You will
 | 
					
						
							| 
									
										
											  
											
												Merged revisions 75797 via svnmerge from
svn+ssh://svn.python.org/python/branches/py3k
................
  r75797 | georg.brandl | 2009-10-27 16:28:25 +0100 (Di, 27 Okt 2009) | 129 lines
  Merged revisions 75365,75394,75402-75403,75418,75459,75484,75592-75596,75600,75602-75607,75610-75613,75616-75617,75623,75627,75640,75647,75696,75795 via svnmerge from
  svn+ssh://pythondev@svn.python.org/python/trunk
  ........
    r75365 | georg.brandl | 2009-10-11 22:16:16 +0200 (So, 11 Okt 2009) | 1 line
    Fix broken links found by "make linkcheck".  scipy.org seems to be done right now, so I could not verify links going there.
  ........
    r75394 | georg.brandl | 2009-10-13 20:10:59 +0200 (Di, 13 Okt 2009) | 1 line
    Fix markup.
  ........
    r75402 | georg.brandl | 2009-10-14 17:51:48 +0200 (Mi, 14 Okt 2009) | 1 line
    #7125: fix typo.
  ........
    r75403 | georg.brandl | 2009-10-14 17:57:46 +0200 (Mi, 14 Okt 2009) | 1 line
    #7126: os.environ changes *do* take effect in subprocesses started with os.system().
  ........
    r75418 | georg.brandl | 2009-10-14 20:48:32 +0200 (Mi, 14 Okt 2009) | 1 line
    #7116: str.join() takes an iterable.
  ........
    r75459 | georg.brandl | 2009-10-17 10:57:43 +0200 (Sa, 17 Okt 2009) | 1 line
    Fix refleaks in _ctypes PyCSimpleType_New, which fixes the refleak seen in test___all__.
  ........
    r75484 | georg.brandl | 2009-10-18 09:58:12 +0200 (So, 18 Okt 2009) | 1 line
    Fix missing word.
  ........
    r75592 | georg.brandl | 2009-10-22 09:05:48 +0200 (Do, 22 Okt 2009) | 1 line
    Fix punctuation.
  ........
    r75593 | georg.brandl | 2009-10-22 09:06:49 +0200 (Do, 22 Okt 2009) | 1 line
    Revert unintended change.
  ........
    r75594 | georg.brandl | 2009-10-22 09:56:02 +0200 (Do, 22 Okt 2009) | 1 line
    Fix markup.
  ........
    r75595 | georg.brandl | 2009-10-22 09:56:56 +0200 (Do, 22 Okt 2009) | 1 line
    Fix duplicate target.
  ........
    r75596 | georg.brandl | 2009-10-22 10:05:04 +0200 (Do, 22 Okt 2009) | 1 line
    Add a new directive marking up implementation details and start using it.
  ........
    r75600 | georg.brandl | 2009-10-22 13:01:46 +0200 (Do, 22 Okt 2009) | 1 line
    Make it more robust.
  ........
    r75602 | georg.brandl | 2009-10-22 13:28:06 +0200 (Do, 22 Okt 2009) | 1 line
    Document new directive.
  ........
    r75603 | georg.brandl | 2009-10-22 13:28:23 +0200 (Do, 22 Okt 2009) | 1 line
    Allow short form with text as argument.
  ........
    r75604 | georg.brandl | 2009-10-22 13:36:50 +0200 (Do, 22 Okt 2009) | 1 line
    Fix stylesheet for multi-paragraph impl-details.
  ........
    r75605 | georg.brandl | 2009-10-22 13:48:10 +0200 (Do, 22 Okt 2009) | 1 line
    Use "impl-detail" directive where applicable.
  ........
    r75606 | georg.brandl | 2009-10-22 17:00:06 +0200 (Do, 22 Okt 2009) | 1 line
    #6324: membership test tries iteration via __iter__.
  ........
    r75607 | georg.brandl | 2009-10-22 17:04:09 +0200 (Do, 22 Okt 2009) | 1 line
    #7088: document new functions in signal as Unix-only.
  ........
    r75610 | georg.brandl | 2009-10-22 17:27:24 +0200 (Do, 22 Okt 2009) | 1 line
    Reorder __slots__ fine print and add a clarification.
  ........
    r75611 | georg.brandl | 2009-10-22 17:42:32 +0200 (Do, 22 Okt 2009) | 1 line
    #7035: improve docs of the various <method>_errors() functions, and give them docstrings.
  ........
    r75612 | georg.brandl | 2009-10-22 17:52:15 +0200 (Do, 22 Okt 2009) | 1 line
    #7156: document curses as Unix-only.
  ........
    r75613 | georg.brandl | 2009-10-22 17:54:35 +0200 (Do, 22 Okt 2009) | 1 line
    #6977: getopt does not support optional option arguments.
  ........
    r75616 | georg.brandl | 2009-10-22 18:17:05 +0200 (Do, 22 Okt 2009) | 1 line
    Add proper references.
  ........
    r75617 | georg.brandl | 2009-10-22 18:20:55 +0200 (Do, 22 Okt 2009) | 1 line
    Make printout margin important.
  ........
    r75623 | georg.brandl | 2009-10-23 10:14:44 +0200 (Fr, 23 Okt 2009) | 1 line
    #7188: fix optionxform() docs.
  ........
    r75627 | fred.drake | 2009-10-23 15:04:51 +0200 (Fr, 23 Okt 2009) | 2 lines
    add further note about what's passed to optionxform
  ........
    r75640 | neil.schemenauer | 2009-10-23 21:58:17 +0200 (Fr, 23 Okt 2009) | 2 lines
    Improve some docstrings in the 'warnings' module.
  ........
    r75647 | georg.brandl | 2009-10-24 12:04:19 +0200 (Sa, 24 Okt 2009) | 1 line
    Fix markup.
  ........
    r75696 | georg.brandl | 2009-10-25 21:25:43 +0100 (So, 25 Okt 2009) | 1 line
    Fix a demo.
  ........
    r75795 | georg.brandl | 2009-10-27 16:10:22 +0100 (Di, 27 Okt 2009) | 1 line
    Fix a strange mis-edit.
  ........
................
											
										 
											2009-10-27 20:24:45 +00:00
										 |  |  | find links to the knowledge base at: http://support.microsoft.com/.
 | 
					
						
							| 
									
										
										
										
											2009-10-27 20:20:38 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | PyRun_SimpleFile() crashes on Windows but not on Unix; why?
 | 
					
						
							|  |  |  | -----------------------------------------------------------
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | This is very sensitive to the compiler vendor, version and (perhaps) even
 | 
					
						
							|  |  |  | options.  If the FILE* structure in your embedding program isn't the same as is
 | 
					
						
							|  |  |  | assumed by the Python interpreter it won't work.
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | The Python 1.5.* DLLs (``python15.dll``) are all compiled with MS VC++ 5.0 and
 | 
					
						
							|  |  |  | with multithreading-DLL options (``/MD``).
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | If you can't change compilers or flags, try using :cfunc:`Py_RunSimpleString`.
 | 
					
						
							|  |  |  | A trick to get it to run an arbitrary file is to construct a call to
 | 
					
						
							|  |  |  | :func:`execfile` with the name of your file as argument.
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Also note that you can not mix-and-match Debug and Release versions.  If you
 | 
					
						
							|  |  |  | wish to use the Debug Multithreaded DLL, then your module *must* have an "_d"
 | 
					
						
							|  |  |  | appended to the base name.
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Importing _tkinter fails on Windows 95/98: why?
 | 
					
						
							|  |  |  | ------------------------------------------------
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Sometimes, the import of _tkinter fails on Windows 95 or 98, complaining with a
 | 
					
						
							|  |  |  | message like the following::
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |    ImportError: DLL load failed: One of the library files needed
 | 
					
						
							|  |  |  |    to run this application cannot be found.
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | It could be that you haven't installed Tcl/Tk, but if you did install Tcl/Tk,
 | 
					
						
							|  |  |  | and the Wish application works correctly, the problem may be that its installer
 | 
					
						
							|  |  |  | didn't manage to edit the autoexec.bat file correctly.  It tries to add a
 | 
					
						
							|  |  |  | statement that changes the PATH environment variable to include the Tcl/Tk 'bin'
 | 
					
						
							|  |  |  | subdirectory, but sometimes this edit doesn't quite work.  Opening it with
 | 
					
						
							|  |  |  | notepad usually reveals what the problem is.
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | (One additional hint, noted by David Szafranski: you can't use long filenames
 | 
					
						
							|  |  |  | here; e.g. use ``C:\PROGRA~1\Tcl\bin`` instead of ``C:\Program Files\Tcl\bin``.)
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | How do I extract the downloaded documentation on Windows?
 | 
					
						
							|  |  |  | ---------------------------------------------------------
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Sometimes, when you download the documentation package to a Windows machine
 | 
					
						
							|  |  |  | using a web browser, the file extension of the saved file ends up being .EXE.
 | 
					
						
							|  |  |  | This is a mistake; the extension should be .TGZ.
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Simply rename the downloaded file to have the .TGZ extension, and WinZip will be
 | 
					
						
							|  |  |  | able to handle it.  (If your copy of WinZip doesn't, get a newer one from
 | 
					
						
							|  |  |  | http://www.winzip.com.)
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Missing cw3215mt.dll (or missing cw3215.dll)
 | 
					
						
							|  |  |  | --------------------------------------------
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Sometimes, when using Tkinter on Windows, you get an error that cw3215mt.dll or
 | 
					
						
							|  |  |  | cw3215.dll is missing.
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Cause: you have an old Tcl/Tk DLL built with cygwin in your path (probably
 | 
					
						
							|  |  |  | ``C:\Windows``).  You must use the Tcl/Tk DLLs from the standard Tcl/Tk
 | 
					
						
							|  |  |  | installation (Python 1.5.2 comes with one).
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Warning about CTL3D32 version from installer
 | 
					
						
							|  |  |  | --------------------------------------------
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | The Python installer issues a warning like this::
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-10-06 10:38:58 +00:00
										 |  |  |    This version uses CTL3D32.DLL which is not the correct version.
 | 
					
						
							| 
									
										
										
										
											2009-10-27 20:20:38 +00:00
										 |  |  |    This version is used for windows NT applications only.
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Tim Peters:
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |    This is a Microsoft DLL, and a notorious source of problems.  The message
 | 
					
						
							|  |  |  |    means what it says: you have the wrong version of this DLL for your operating
 | 
					
						
							|  |  |  |    system.  The Python installation did not cause this -- something else you
 | 
					
						
							|  |  |  |    installed previous to this overwrote the DLL that came with your OS (probably
 | 
					
						
							|  |  |  |    older shareware of some sort, but there's no way to tell now).  If you search
 | 
					
						
							|  |  |  |    for "CTL3D32" using any search engine (AltaVista, for example), you'll find
 | 
					
						
							|  |  |  |    hundreds and hundreds of web pages complaining about the same problem with
 | 
					
						
							|  |  |  |    all sorts of installation programs.  They'll point you to ways to get the
 | 
					
						
							|  |  |  |    correct version reinstalled on your system (since Python doesn't cause this,
 | 
					
						
							|  |  |  |    we can't fix it).
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | David A Burton has written a little program to fix this.  Go to
 | 
					
						
							| 
									
										
											  
											
												Merged revisions 75797 via svnmerge from
svn+ssh://svn.python.org/python/branches/py3k
................
  r75797 | georg.brandl | 2009-10-27 16:28:25 +0100 (Di, 27 Okt 2009) | 129 lines
  Merged revisions 75365,75394,75402-75403,75418,75459,75484,75592-75596,75600,75602-75607,75610-75613,75616-75617,75623,75627,75640,75647,75696,75795 via svnmerge from
  svn+ssh://pythondev@svn.python.org/python/trunk
  ........
    r75365 | georg.brandl | 2009-10-11 22:16:16 +0200 (So, 11 Okt 2009) | 1 line
    Fix broken links found by "make linkcheck".  scipy.org seems to be done right now, so I could not verify links going there.
  ........
    r75394 | georg.brandl | 2009-10-13 20:10:59 +0200 (Di, 13 Okt 2009) | 1 line
    Fix markup.
  ........
    r75402 | georg.brandl | 2009-10-14 17:51:48 +0200 (Mi, 14 Okt 2009) | 1 line
    #7125: fix typo.
  ........
    r75403 | georg.brandl | 2009-10-14 17:57:46 +0200 (Mi, 14 Okt 2009) | 1 line
    #7126: os.environ changes *do* take effect in subprocesses started with os.system().
  ........
    r75418 | georg.brandl | 2009-10-14 20:48:32 +0200 (Mi, 14 Okt 2009) | 1 line
    #7116: str.join() takes an iterable.
  ........
    r75459 | georg.brandl | 2009-10-17 10:57:43 +0200 (Sa, 17 Okt 2009) | 1 line
    Fix refleaks in _ctypes PyCSimpleType_New, which fixes the refleak seen in test___all__.
  ........
    r75484 | georg.brandl | 2009-10-18 09:58:12 +0200 (So, 18 Okt 2009) | 1 line
    Fix missing word.
  ........
    r75592 | georg.brandl | 2009-10-22 09:05:48 +0200 (Do, 22 Okt 2009) | 1 line
    Fix punctuation.
  ........
    r75593 | georg.brandl | 2009-10-22 09:06:49 +0200 (Do, 22 Okt 2009) | 1 line
    Revert unintended change.
  ........
    r75594 | georg.brandl | 2009-10-22 09:56:02 +0200 (Do, 22 Okt 2009) | 1 line
    Fix markup.
  ........
    r75595 | georg.brandl | 2009-10-22 09:56:56 +0200 (Do, 22 Okt 2009) | 1 line
    Fix duplicate target.
  ........
    r75596 | georg.brandl | 2009-10-22 10:05:04 +0200 (Do, 22 Okt 2009) | 1 line
    Add a new directive marking up implementation details and start using it.
  ........
    r75600 | georg.brandl | 2009-10-22 13:01:46 +0200 (Do, 22 Okt 2009) | 1 line
    Make it more robust.
  ........
    r75602 | georg.brandl | 2009-10-22 13:28:06 +0200 (Do, 22 Okt 2009) | 1 line
    Document new directive.
  ........
    r75603 | georg.brandl | 2009-10-22 13:28:23 +0200 (Do, 22 Okt 2009) | 1 line
    Allow short form with text as argument.
  ........
    r75604 | georg.brandl | 2009-10-22 13:36:50 +0200 (Do, 22 Okt 2009) | 1 line
    Fix stylesheet for multi-paragraph impl-details.
  ........
    r75605 | georg.brandl | 2009-10-22 13:48:10 +0200 (Do, 22 Okt 2009) | 1 line
    Use "impl-detail" directive where applicable.
  ........
    r75606 | georg.brandl | 2009-10-22 17:00:06 +0200 (Do, 22 Okt 2009) | 1 line
    #6324: membership test tries iteration via __iter__.
  ........
    r75607 | georg.brandl | 2009-10-22 17:04:09 +0200 (Do, 22 Okt 2009) | 1 line
    #7088: document new functions in signal as Unix-only.
  ........
    r75610 | georg.brandl | 2009-10-22 17:27:24 +0200 (Do, 22 Okt 2009) | 1 line
    Reorder __slots__ fine print and add a clarification.
  ........
    r75611 | georg.brandl | 2009-10-22 17:42:32 +0200 (Do, 22 Okt 2009) | 1 line
    #7035: improve docs of the various <method>_errors() functions, and give them docstrings.
  ........
    r75612 | georg.brandl | 2009-10-22 17:52:15 +0200 (Do, 22 Okt 2009) | 1 line
    #7156: document curses as Unix-only.
  ........
    r75613 | georg.brandl | 2009-10-22 17:54:35 +0200 (Do, 22 Okt 2009) | 1 line
    #6977: getopt does not support optional option arguments.
  ........
    r75616 | georg.brandl | 2009-10-22 18:17:05 +0200 (Do, 22 Okt 2009) | 1 line
    Add proper references.
  ........
    r75617 | georg.brandl | 2009-10-22 18:20:55 +0200 (Do, 22 Okt 2009) | 1 line
    Make printout margin important.
  ........
    r75623 | georg.brandl | 2009-10-23 10:14:44 +0200 (Fr, 23 Okt 2009) | 1 line
    #7188: fix optionxform() docs.
  ........
    r75627 | fred.drake | 2009-10-23 15:04:51 +0200 (Fr, 23 Okt 2009) | 2 lines
    add further note about what's passed to optionxform
  ........
    r75640 | neil.schemenauer | 2009-10-23 21:58:17 +0200 (Fr, 23 Okt 2009) | 2 lines
    Improve some docstrings in the 'warnings' module.
  ........
    r75647 | georg.brandl | 2009-10-24 12:04:19 +0200 (Sa, 24 Okt 2009) | 1 line
    Fix markup.
  ........
    r75696 | georg.brandl | 2009-10-25 21:25:43 +0100 (So, 25 Okt 2009) | 1 line
    Fix a demo.
  ........
    r75795 | georg.brandl | 2009-10-27 16:10:22 +0100 (Di, 27 Okt 2009) | 1 line
    Fix a strange mis-edit.
  ........
................
											
										 
											2009-10-27 20:24:45 +00:00
										 |  |  | http://www.burtonsys.com/downloads.html and click on "ctl3dfix.zip".
 |