-Example Python extension for Windows NT\r
-=======================================\r
-\r
-This directory contains everything needed (except for the Python\r
-distribution!) to build a Python extension module using Microsoft VC++\r
-("Developer Studio") version 7.1. It has been tested with VC++ 7.1 on \r
-Python 2.4. You can also use earlier versions of VC to build Python \r
-extensions, but the sample VC project file (example.dsw in this directory) \r
-is in VC 7.1 format. Notice that you need to use the same compiler version\r
-that was used to build Python itself.\r
-\r
-COPY THIS DIRECTORY!\r
---------------------\r
-This "example_nt" directory is a subdirectory of the PC directory, in order\r
-to keep all the PC-specific files under the same directory. However, the\r
-example_nt directory can't actually be used from this location. You first\r
-need to copy or move it up one level, so that example_nt is a direct\r
-sibling of the PC\ and Include\ directories. Do all your work from within\r
-this new location -- sorry, but you'll be sorry if you don't.\r
-\r
-OPEN THE PROJECT\r
-----------------\r
-From VC 7.1, use the\r
- File -> Open Solution...\r
-dialog (*not* the "File -> Open..." dialog!). Navigate to and select the\r
-file "example.sln", in the *copy* of the example_nt directory you made\r
-above.\r
-Click Open.\r
-\r
-BUILD THE EXAMPLE DLL\r
----------------------\r
-In order to check that everything is set up right, try building:\r
-\r
-1. Select a configuration. This step is optional. Do\r
- Build -> Configuration Manager... -> Active Solution Configuration\r
- and select either "Release" or "Debug".\r
- If you skip this step, you'll use the Debug configuration by default.\r
-\r
-2. Build the DLL. Do\r
- Build -> Build Solution\r
- This creates all intermediate and result files in a subdirectory which\r
- is called either Debug or Release, depending on which configuration you\r
- picked in the preceding step.\r
-\r
-TESTING THE DEBUG-MODE DLL\r
---------------------------\r
-Once the Debug build has succeeded, bring up a DOS box, and cd to\r
-example_nt\Debug. You should now be able to repeat the following session\r
-("C>" is the DOS prompt, ">>>" is the Python prompt) (note that various\r
-debug output from Python may not match this screen dump exactly):\r
-\r
- C>..\..\PCbuild\python_d\r
- Adding parser accelerators ...\r
- Done.\r
- Python 2.2c1+ (#28, Dec 14 2001, 18:06:39) [MSC 32 bit (Intel)] on win32\r
- Type "help", "copyright", "credits" or "license" for more information.\r
- >>> import example\r
- [7052 refs]\r
- >>> example.foo()\r
- Hello, world\r
- [7052 refs]\r
- >>>\r
-\r
-TESTING THE RELEASE-MODE DLL\r
-----------------------------\r
-Once the Release build has succeeded, bring up a DOS box, and cd to\r
-example_nt\Release. You should now be able to repeat the following session\r
-("C>" is the DOS prompt, ">>>" is the Python prompt):\r
-\r
- C>..\..\PCbuild\python\r
- Python 2.2c1+ (#28, Dec 14 2001, 18:06:04) [MSC 32 bit (Intel)] on win32\r
- Type "help", "copyright", "credits" or "license" for more information.\r
- >>> import example\r
- >>> example.foo()\r
- Hello, world\r
- >>>\r
-\r
-Congratulations! You've successfully built your first Python extension\r
-module.\r
-\r
-CREATING YOUR OWN PROJECT\r
--------------------------\r
-Choose a name ("spam" is always a winner :-) and create a directory for\r
-it. Copy your C sources into it. Note that the module source file name\r
-does not necessarily have to match the module name, but the "init" function\r
-name should match the module name -- i.e. you can only import a module\r
-"spam" if its init function is called "initspam()", and it should call\r
-Py_InitModule with the string "spam" as its first argument (use the minimal\r
-example.c in this directory as a guide). By convention, it lives in a file\r
-called "spam.c" or "spammodule.c". The output file should be called\r
-"spam.dll" or "spam.pyd" (the latter is supported to avoid confusion with a\r
-system library "spam.dll" to which your module could be a Python interface)\r
-in Release mode, or spam_d.dll or spam_d.pyd in Debug mode.\r
-\r
-Now your options are:\r
-\r
-1) Copy example.sln and example.vcproj, rename them to spam.*, and edit them\r
-by hand.\r
-\r
-or\r
-\r
-2) Create a brand new project; instructions are below.\r
-\r
-In either case, copy example_nt\example.def to spam\spam.def, and edit the\r
-new spam.def so its second line contains the string "initspam". If you\r
-created a new project yourself, add the file spam.def to the project now.\r
-(This is an annoying little file with only two lines. An alternative\r
-approach is to forget about the .def file, and add the option\r
-"/export:initspam" somewhere to the Link settings, by manually editing the\r
-"Project -> Properties -> Linker -> Command Line -> Additional Options" \r
-box).\r
-\r
-You are now all set to build your extension, unless it requires other\r
-external libraries, include files, etc. See Python's Extending and\r
-Embedding manual for instructions on how to write an extension.\r
-\r
-\r
-CREATING A BRAND NEW PROJECT\r
-----------------------------\r
-Use the\r
- File -> New -> Project...\r
-dialog to create a new Project Workspace. Select "Visual C++ Projects/Win32/\r
-Win32 Project", enter the name ("spam"), and make sure the "Location" is \r
-set to parent of the spam directory you have created (which should be a direct \r
-subdirectory of the Python build tree, a sibling of Include and PC). \r
-In "Application Settings", select "DLL", and "Empty Project". Click OK.\r
-\r
-You should now create the file spam.def as instructed in the previous\r
-section. Add the source files (including the .def file) to the project, \r
-using "Project", "Add Existing Item".\r
-\r
-Now open the\r
- Project -> spam properties...\r
-dialog. (Impressive, isn't it? :-) You only need to change a few\r
-settings. Make sure "All Configurations" is selected from the "Settings\r
-for:" dropdown list. Select the "C/C++" tab. Choose the "General"\r
-category in the popup menu at the top. Type the following text in the\r
-entry box labeled "Addditional Include Directories:"\r
-\r
- ..\Include,..\PC\r
-\r
-Then, choose the "General" category in the "Linker" tab, and enter\r
- ..\PCbuild\r
-in the "Additional library Directories" box.\r
-\r
-Now you need to add some mode-specific settings (select "Accept"\r
-when asked to confirm your changes):\r
-\r
-Select "Release" in the "Configuration" dropdown list. Click the\r
-"Link" tab, choose the "Input" Category, and append "python24.lib" to the\r
-list in the "Additional Dependencies" box.\r
-\r
-Select "Debug" in the "Settings for:" dropdown list, and append\r
-"python24_d.lib" to the list in the Additional Dependencies" box. Then\r
-click on the C/C++ tab, select "Code Generation", and select \r
-"Multi-threaded Debug DLL" from the "Runtime library" dropdown list.\r
-\r
-Select "Release" again from the "Settings for:" dropdown list.\r
-Select "Multi-threaded DLL" from the "Use run-time library:" dropdown list.\r
-\r
-That's all <wink>.\r
+Example Python extension for Windows NT
+=======================================
+
+This directory contains everything needed (except for the Python
+distribution!) to build a Python extension module using Microsoft VC++
+("Developer Studio") version 7.1. It has been tested with VC++ 7.1 on
+Python 2.4. You can also use earlier versions of VC to build Python
+extensions, but the sample VC project file (example.dsw in this directory)
+is in VC 7.1 format. Notice that you need to use the same compiler version
+that was used to build Python itself.
+
+COPY THIS DIRECTORY!
+--------------------
+This "example_nt" directory is a subdirectory of the PC directory, in order
+to keep all the PC-specific files under the same directory. However, the
+example_nt directory can't actually be used from this location. You first
+need to copy or move it up one level, so that example_nt is a direct
+sibling of the PC\ and Include\ directories. Do all your work from within
+this new location -- sorry, but you'll be sorry if you don't.
+
+OPEN THE PROJECT
+----------------
+From VC 7.1, use the
+ File -> Open Solution...
+dialog (*not* the "File -> Open..." dialog!). Navigate to and select the
+file "example.sln", in the *copy* of the example_nt directory you made
+above.
+Click Open.
+
+BUILD THE EXAMPLE DLL
+---------------------
+In order to check that everything is set up right, try building:
+
+1. Select a configuration. This step is optional. Do
+ Build -> Configuration Manager... -> Active Solution Configuration
+ and select either "Release" or "Debug".
+ If you skip this step, you'll use the Debug configuration by default.
+
+2. Build the DLL. Do
+ Build -> Build Solution
+ This creates all intermediate and result files in a subdirectory which
+ is called either Debug or Release, depending on which configuration you
+ picked in the preceding step.
+
+TESTING THE DEBUG-MODE DLL
+--------------------------
+Once the Debug build has succeeded, bring up a DOS box, and cd to
+example_nt\Debug. You should now be able to repeat the following session
+("C>" is the DOS prompt, ">>>" is the Python prompt) (note that various
+debug output from Python may not match this screen dump exactly):
+
+ C>..\..\PCbuild\python_d
+ Adding parser accelerators ...
+ Done.
+ Python 2.2c1+ (#28, Dec 14 2001, 18:06:39) [MSC 32 bit (Intel)] on win32
+ Type "help", "copyright", "credits" or "license" for more information.
+ >>> import example
+ [7052 refs]
+ >>> example.foo()
+ Hello, world
+ [7052 refs]
+ >>>
+
+TESTING THE RELEASE-MODE DLL
+----------------------------
+Once the Release build has succeeded, bring up a DOS box, and cd to
+example_nt\Release. You should now be able to repeat the following session
+("C>" is the DOS prompt, ">>>" is the Python prompt):
+
+ C>..\..\PCbuild\python
+ Python 2.2c1+ (#28, Dec 14 2001, 18:06:04) [MSC 32 bit (Intel)] on win32
+ Type "help", "copyright", "credits" or "license" for more information.
+ >>> import example
+ >>> example.foo()
+ Hello, world
+ >>>
+
+Congratulations! You've successfully built your first Python extension
+module.
+
+CREATING YOUR OWN PROJECT
+-------------------------
+Choose a name ("spam" is always a winner :-) and create a directory for
+it. Copy your C sources into it. Note that the module source file name
+does not necessarily have to match the module name, but the "init" function
+name should match the module name -- i.e. you can only import a module
+"spam" if its init function is called "initspam()", and it should call
+Py_InitModule with the string "spam" as its first argument (use the minimal
+example.c in this directory as a guide). By convention, it lives in a file
+called "spam.c" or "spammodule.c". The output file should be called
+"spam.dll" or "spam.pyd" (the latter is supported to avoid confusion with a
+system library "spam.dll" to which your module could be a Python interface)
+in Release mode, or spam_d.dll or spam_d.pyd in Debug mode.
+
+Now your options are:
+
+1) Copy example.sln and example.vcproj, rename them to spam.*, and edit them
+by hand.
+
+or
+
+2) Create a brand new project; instructions are below.
+
+In either case, copy example_nt\example.def to spam\spam.def, and edit the
+new spam.def so its second line contains the string "initspam". If you
+created a new project yourself, add the file spam.def to the project now.
+(This is an annoying little file with only two lines. An alternative
+approach is to forget about the .def file, and add the option
+"/export:initspam" somewhere to the Link settings, by manually editing the
+"Project -> Properties -> Linker -> Command Line -> Additional Options"
+box).
+
+You are now all set to build your extension, unless it requires other
+external libraries, include files, etc. See Python's Extending and
+Embedding manual for instructions on how to write an extension.
+
+
+CREATING A BRAND NEW PROJECT
+----------------------------
+Use the
+ File -> New -> Project...
+dialog to create a new Project Workspace. Select "Visual C++ Projects/Win32/
+Win32 Project", enter the name ("spam"), and make sure the "Location" is
+set to parent of the spam directory you have created (which should be a direct
+subdirectory of the Python build tree, a sibling of Include and PC).
+In "Application Settings", select "DLL", and "Empty Project". Click OK.
+
+You should now create the file spam.def as instructed in the previous
+section. Add the source files (including the .def file) to the project,
+using "Project", "Add Existing Item".
+
+Now open the
+ Project -> spam properties...
+dialog. (Impressive, isn't it? :-) You only need to change a few
+settings. Make sure "All Configurations" is selected from the "Settings
+for:" dropdown list. Select the "C/C++" tab. Choose the "General"
+category in the popup menu at the top. Type the following text in the
+entry box labeled "Addditional Include Directories:"
+
+ ..\Include,..\PC
+
+Then, choose the "General" category in the "Linker" tab, and enter
+ ..\PCbuild
+in the "Additional library Directories" box.
+
+Now you need to add some mode-specific settings (select "Accept"
+when asked to confirm your changes):
+
+Select "Release" in the "Configuration" dropdown list. Click the
+"Link" tab, choose the "Input" Category, and append "python24.lib" to the
+list in the "Additional Dependencies" box.
+
+Select "Debug" in the "Settings for:" dropdown list, and append
+"python24_d.lib" to the list in the Additional Dependencies" box. Then
+click on the C/C++ tab, select "Code Generation", and select
+"Multi-threaded Debug DLL" from the "Runtime library" dropdown list.
+
+Select "Release" again from the "Settings for:" dropdown list.
+Select "Multi-threaded DLL" from the "Use run-time library:" dropdown list.
+
+That's all <wink>.
-Welcome to the "PC" subdirectory of the Python distribution\r
-***********************************************************\r
-\r
-*** Note: the project files for MS VC++ 7.1 are now in the\r
-*** PCbuild directory. See the file readme.txt there for build\r
-*** instructions. There is some information below that might\r
-*** still be relevant.\r
-\r
-This "PC" subdirectory contains complete project files to make\r
-several older PC ports of Python, as well as all the PC-specific\r
-Python source files. It should be located in the root of the\r
-Python distribution, and there should be directories "Modules",\r
-"Objects", "Python", etc. in the parent directory of this "PC"\r
-subdirectory. Be sure to read the documentation in the Python\r
-distribution.\r
-\r
-Python requires library files such as string.py to be available in\r
-one or more library directories. The search path of libraries is\r
-set up when Python starts. To see the current Python library search\r
-path, start Python and enter "import sys" and "print sys.path".\r
-\r
-All PC ports use this scheme to try to set up a module search path:\r
-\r
- 1) The script location; the current directory without script.\r
- 2) The PYTHONPATH variable, if set.\r
- 3) For Win32 platforms (NT/95), paths specified in the Registry.\r
- 4) Default directories lib, lib/win, lib/test, lib/tkinter;\r
- these are searched relative to the environment variable\r
- PYTHONHOME, if set, or relative to the executable and its\r
- ancestors, if a landmark file (Lib/string.py) is found ,\r
- or the current directory (not useful).\r
- 5) The directory containing the executable.\r
-\r
-The best installation strategy is to put the Python executable (and\r
-DLL, for Win32 platforms) in some convenient directory such as\r
-C:/python, and copy all library files and subdirectories (using XCOPY)\r
-to C:/python/lib. Then you don't need to set PYTHONPATH. Otherwise,\r
-set the environment variable PYTHONPATH to your Python search path.\r
-For example,\r
- set PYTHONPATH=.;d:\python\lib;d:\python\lib\win;d:\python\lib\dos-8x3\r
-\r
-There are several add-in modules to build Python programs which use\r
-the native Windows operating environment. The ports here just make\r
-"QuickWin" and DOS Python versions which support a character-mode\r
-(console) environment. Look in www.python.org for Tkinter, PythonWin,\r
-WPY and wxPython.\r
-\r
-To make a Python port, start the Integrated Development Environment\r
-(IDE) of your compiler, and read in the native "project file"\r
-(or makefile) provided. This will enable you to change any source\r
-files or build settings so you can make custom builds.\r
-\r
-pyconfig.h An important configuration file specific to PC's.\r
-\r
-config.c The list of C modules to include in the Python PC\r
- version. Manually edit this file to add or\r
- remove Python modules.\r
-\r
-testpy.py A Python test program. Run this to test your\r
- Python port. It should produce copious output,\r
- ending in a report on how many tests were OK, how many\r
- failed, and how many were skipped. Don't worry about\r
- skipped tests (these test unavailable optional features).\r
-\r
-\r
-Additional files and subdirectories for 32-bit Windows\r
-======================================================\r
-\r
-python_nt.rc Resource compiler input for python15.dll.\r
-\r
-dl_nt.c, import_nt.c\r
- Additional sources used for 32-bit Windows features.\r
-\r
-getpathp.c Default sys.path calculations (for all PC platforms).\r
-\r
-dllbase_nt.txt A (manually maintained) list of base addresses for\r
- various DLLs, to avoid run-time relocation.\r
-\r
-example_nt A subdirectory showing how to build an extension as a\r
- DLL.\r
-\r
-Visual Studio 6.0\r
-=================\r
-The subdirectory VC6 contains Visual Studio 6 project files. These\r
-were originally located in the PCBuild directory, but are no longer\r
-maintained.\r
-\r
-\r
-IBM VisualAge C/C++ for OS/2\r
-============================\r
-\r
-See os2vacpp/readme.txt. This platform is supported by Jeff Rush.\r
-\r
-\r
-Note for Windows 3.x and DOS users\r
-==================================\r
-\r
-Neither Windows 3.x nor DOS is supported any more. The last Python\r
-version that supported these was Python 1.5.2; the support files were\r
-present in Python 2.0 but weren't updated, and it is not our intention\r
-to support these platforms for Python 2.x.\r
+Welcome to the "PC" subdirectory of the Python distribution
+***********************************************************
+
+*** Note: the project files for MS VC++ 7.1 are now in the
+*** PCbuild directory. See the file readme.txt there for build
+*** instructions. There is some information below that might
+*** still be relevant.
+
+This "PC" subdirectory contains complete project files to make
+several older PC ports of Python, as well as all the PC-specific
+Python source files. It should be located in the root of the
+Python distribution, and there should be directories "Modules",
+"Objects", "Python", etc. in the parent directory of this "PC"
+subdirectory. Be sure to read the documentation in the Python
+distribution.
+
+Python requires library files such as string.py to be available in
+one or more library directories. The search path of libraries is
+set up when Python starts. To see the current Python library search
+path, start Python and enter "import sys" and "print sys.path".
+
+All PC ports use this scheme to try to set up a module search path:
+
+ 1) The script location; the current directory without script.
+ 2) The PYTHONPATH variable, if set.
+ 3) For Win32 platforms (NT/95), paths specified in the Registry.
+ 4) Default directories lib, lib/win, lib/test, lib/tkinter;
+ these are searched relative to the environment variable
+ PYTHONHOME, if set, or relative to the executable and its
+ ancestors, if a landmark file (Lib/string.py) is found ,
+ or the current directory (not useful).
+ 5) The directory containing the executable.
+
+The best installation strategy is to put the Python executable (and
+DLL, for Win32 platforms) in some convenient directory such as
+C:/python, and copy all library files and subdirectories (using XCOPY)
+to C:/python/lib. Then you don't need to set PYTHONPATH. Otherwise,
+set the environment variable PYTHONPATH to your Python search path.
+For example,
+ set PYTHONPATH=.;d:\python\lib;d:\python\lib\win;d:\python\lib\dos-8x3
+
+There are several add-in modules to build Python programs which use
+the native Windows operating environment. The ports here just make
+"QuickWin" and DOS Python versions which support a character-mode
+(console) environment. Look in www.python.org for Tkinter, PythonWin,
+WPY and wxPython.
+
+To make a Python port, start the Integrated Development Environment
+(IDE) of your compiler, and read in the native "project file"
+(or makefile) provided. This will enable you to change any source
+files or build settings so you can make custom builds.
+
+pyconfig.h An important configuration file specific to PC's.
+
+config.c The list of C modules to include in the Python PC
+ version. Manually edit this file to add or
+ remove Python modules.
+
+testpy.py A Python test program. Run this to test your
+ Python port. It should produce copious output,
+ ending in a report on how many tests were OK, how many
+ failed, and how many were skipped. Don't worry about
+ skipped tests (these test unavailable optional features).
+
+
+Additional files and subdirectories for 32-bit Windows
+======================================================
+
+python_nt.rc Resource compiler input for python15.dll.
+
+dl_nt.c, import_nt.c
+ Additional sources used for 32-bit Windows features.
+
+getpathp.c Default sys.path calculations (for all PC platforms).
+
+dllbase_nt.txt A (manually maintained) list of base addresses for
+ various DLLs, to avoid run-time relocation.
+
+example_nt A subdirectory showing how to build an extension as a
+ DLL.
+
+Visual Studio 6.0
+=================
+The subdirectory VC6 contains Visual Studio 6 project files. These
+were originally located in the PCBuild directory, but are no longer
+maintained.
+
+
+IBM VisualAge C/C++ for OS/2
+============================
+
+See os2vacpp/readme.txt. This platform is supported by Jeff Rush.
+
+
+Note for Windows 3.x and DOS users
+==================================
+
+Neither Windows 3.x nor DOS is supported any more. The last Python
+version that supported these was Python 1.5.2; the support files were
+present in Python 2.0 but weren't updated, and it is not our intention
+to support these platforms for Python 2.x.