Skip to content
arseij edited this page Oct 21, 2021 · 14 revisions

Pywin32 302 (Stable Version)

      Pywin32 for Windows

      Pywin32 for Mac

      Pywin32 for Linux

This is the readme for the Python for Win32 (pywin32) extensions, which provides access to many of the Windows APIs from Python.

See CHANGES.txt for recent notable changes.

Only Python 3 is supported. If you want Python 2 support, you want build 228.

Support

Feel free to open issues for all bugs (or suspected bugs) in pywin32. pull-requests for all bugs or features are also welcome.

However, please do not open github issues for general support requests, or for problems or questions using the modules in this package - they will be closed. For such issues, please email the python-win32 mailing list - note that you must be subscribed to the list before posting.

Binaries

By far the easiest way to use pywin32 is to grab binaries from the most recent release

Installing via PIP

You can install pywin32 via pip:

pip install pywin32

If you encounter any problems when upgrading (eg, "module not found" errors or similar), you should execute:

python Scripts/pywin32_postinstall.py -install

This will make some small attempts to cleanup older conflicting installs.

Note that if you want to use pywin32 for "system wide" features, such as registering COM objects or implementing Windows Services, then you must run that command from an elevated (ie, "Run as Administrator) command prompt.

Building from source

Building from source has been simplified recently - you just need Visual Studio and the Windows 10 SDK installed (the free compilers probably work too, but haven't been tested - let me know your experiences!)

setup.py is a standard distutils build script. You probably want:

python setup.py install

or

python setup.py --help

You can run setup.py without any arguments to see specific information about dependencies. A vanilla MSVC installation should be able to build most extensions and list any extensions that could not be built due to missing libraries - if the build actually fails with your configuration, please open an issue.

Release process

The following steps are performed when making a new release - this is mainly to form a checklist so mhammond doesn't forget what to do :)

  • Ensure CHANGES.txt has everything worth noting, commit it.

  • Update setup.py with the new build number.

  • Execute build.bat, wait forever, test the artifacts.

  • Upload .whl artifacts to pypi - we do this before pushing the tag because they might be rejected for an invalid README.md. Done via py -3.5 -m twine upload dist/*XXX*.whl.

  • Commit setup.py (so the new build number is in the repo), create a new git tag

  • Upload the .exe installers to github.

  • Update setup.py with the new build number + ".1" (eg, 123.1), to ensure future test builds aren't mistaken for the real release.

  • Make sure everything is pushed to github, including the tag (ie, git push --tags)

  • Send mail to python-win32

Clone this wiki locally