Latest version
Released:
Python for Window Extensions
Project description
Dec 06, 2020 This is pretty simple – if there is a single argument (the script/binary itself), then start the service control dispatcher to allow Windows to manage the service. If there are any other arguments, assume that it is arguments to manager the service, e.g. Install, or start. In both cases, we send our ServiceFramework subclass as a parameter. Nssm is an excellent tool to install your services with, unlike sc or from raw python code with win32serviceutil. Have a module that calls the main function and run the module inside a batch file. Then the batch file can be used for the windows service. In the python module: ' main.py ' from myCode import run.py run In service.bat. For Python you can do this, which creates the service in one go: nssm install MyServiceName c: python27 python.exe c: temp myscript.py. Where myscript.py is the boilerplate script above, modified to invoke your application script or code in the main function.
# pywin32
[![CI](https://github.com/mhammond/pywin32/workflows/CI/badge.svg)](https://github.com/mhammond/pywin32/actions?query=workflow%3ACI)[![PyPI - Version](https://img.shields.io/pypi/v/pywin32.svg)](https://pypi.org/project/pywin32)[![PyPI - Python Version](https://img.shields.io/pypi/pyversions/pywin32.svg)](https://pypi.org/project/pywin32)[![PyPI - Downloads](https://img.shields.io/pypi/dm/pywin32.svg)](https://pypi.org/project/pywin32)[![License - PSF-2.0](https://img.shields.io/badge/license-PSF–2.0-9400d3.svg)](https://spdx.org/licenses/PSF-2.0.html)
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](https://github.com/mhammond/pywin32/blob/master/CHANGES.txt) for recent notable changes.
Build 228 is the last build supporting Python 2, and as part of this transition,all code in the repository is now using Python 3 syntax.To highlight and celebrate this change, build 228 is the last numbered 2XX - thefollowing build numbers start at 300.
In other words, there is no build 229 - the build numbers jump from 228 to 300.
As of build 222, pywin32 has a new home at [github](https://github.com/mhammond/pywin32).You can find build 221 and later on github and older versions can be found onthe old project home at [sourceforge](https://sourceforge.net/projects/pywin32/)
A special shout-out to @xoviat who provided enormous help with the github move!
## Support
Feel free to [open issues](https://github.com/mhammond/pywin32/issues) forall bugs (or suspected bugs) in pywin32. [pull-requests](https://github.com/mhammond/pywin32/pulls)for all bugs or features are also welcome.
However, please do not open github issues for general support requests, orfor problems or questions using the modules in this package - they will beclosed. For such issues, please email the[python-win32 mailing list](http://mail.python.org/mailman/listinfo/python-win32) -note that you must be subscribed to the list before posting.
## BinariesBy far the easiest way to use pywin32 is to grab binaries from the [most recent release](https://github.com/mhammond/pywin32/releases)
## Installing via PIP
You can install pywin32 via pip:> pip install pywin32
Note that if you want to use pywin32 for 'system wide' features, such asregistering COM objects or implementing Windows Services, then you must runthe following command from an elevated command prompt:
> python Scripts/pywin32_postinstall.py -install
## Building from source
Building from source has been simplified recently - you just need Visual Studioand the Windows 10 SDK installed (the free compilers probably work too, buthaven'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 seespecific information about dependencies. A vanilla MSVC installation shouldbe able to build most extensions and list any extensions that could not bebuilt due to missing libraries - if the build actually fails with yourconfiguration, please [open an issue](https://github.com/mhammond/pywin32/issues).
## Release process
The following steps are performed when making a new release - this is mainlyto 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.
- Commit setup.py (so the new build number is in the repo), create a new git tag
- Update setup.py with the new build number + '.1' (eg, 123.1), to ensurefuture test builds aren't mistaken for the real release.
- Make sure everything is pushed to github, including the tag (ie,git push –tags)
- Upload the .exe installers to github (using the web UI), the .whl files topypi (using py -3.5 -m twine upload dist/*XXX*.whl where XXX is the buildnumber).
- Send mail to python-win32
Release historyRelease notifications | RSS feed
301
300
228
227
226
225
224
223
222
214
210
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Filename, size | File type | Python version | Upload date | Hashes |
---|---|---|---|---|
Filename, size pywin32-301-cp35-cp35m-win32.whl (8.5 MB) | File type Wheel | Python version cp35 | Upload date | Hashes |
Filename, size pywin32-301-cp35-cp35m-win_amd64.whl (9.2 MB) | File type Wheel | Python version cp35 | Upload date | Hashes |
Filename, size pywin32-301-cp36-cp36m-win32.whl (8.5 MB) | File type Wheel | Python version cp36 | Upload date | Hashes |
Filename, size pywin32-301-cp36-cp36m-win_amd64.whl (9.2 MB) | File type Wheel | Python version cp36 | Upload date | Hashes |
Filename, size pywin32-301-cp37-cp37m-win32.whl (8.5 MB) | File type Wheel | Python version cp37 | Upload date | Hashes |
Filename, size pywin32-301-cp37-cp37m-win_amd64.whl (9.2 MB) | File type Wheel | Python version cp37 | Upload date | Hashes |
Filename, size pywin32-301-cp38-cp38-win32.whl (8.5 MB) | File type Wheel | Python version cp38 | Upload date | Hashes |
Filename, size pywin32-301-cp38-cp38-win_amd64.whl (9.3 MB) | File type Wheel | Python version cp38 | Upload date | Hashes |
Filename, size pywin32-301-cp39-cp39-win32.whl (8.5 MB) | File type Wheel | Python version cp39 | Upload date | Hashes |
Filename, size pywin32-301-cp39-cp39-win_amd64.whl (9.3 MB) | File type Wheel | Python version cp39 | Upload date | Hashes |
Install Win32serviceutil
Hashes for pywin32-301-cp35-cp35m-win32.whl
Python Win32serviceutil Install Service Pack
Algorithm | Hash digest |
---|---|
SHA256 | 93367c96e3a76dfe5003d8291ae16454ca7d84bb24d721e0b74a07610b7be4a7 |
MD5 | 044ff8954c793795e2e23d45abb02440 |
BLAKE2-256 | 68ce598fa78c2f475dfd7d24fc66e608ab2579d03a696ed6d1a3cb2cb96ad4b7 |
Hashes for pywin32-301-cp35-cp35m-win_amd64.whl
Algorithm | Hash digest |
---|---|
SHA256 | 9635df6998a70282bd36e7ac2a5cef9ead1627b0a63b17c731312c7a0daebb72 |
MD5 | 657938fd5f417843f0522bf3f5cdbab3 |
BLAKE2-256 | fc2aa91ab99796b7321359bcd1f85f95bdfdbe05b888b36e8a7a7cda1cbec8e1 |
Hashes for pywin32-301-cp36-cp36m-win32.whl
Algorithm | Hash digest |
---|---|
SHA256 | c866f04a182a8cb9b7855de065113bbd2e40524f570db73ef1ee99ff0a5cc2f0 |
MD5 | d4f772b4ddd995d945767e518df5ca50 |
BLAKE2-256 | ec98e4169c08b2d45e8a16b3b61c8d6b5a17c732ba604297b1174a427b4847cd |
Hashes for pywin32-301-cp36-cp36m-win_amd64.whl
Algorithm | Hash digest |
---|---|
SHA256 | dafa18e95bf2a92f298fe9c582b0e205aca45c55f989937c52c454ce65b93c78 |
MD5 | 9b8b83dcc3aff8a487c41b8a70ed636a |
BLAKE2-256 | c621bb0ff995c5f67786fb3d6ffbfc5160ed89d7267862123a10e0a4a2d924db |
Hashes for pywin32-301-cp37-cp37m-win32.whl
Algorithm | Hash digest |
---|---|
SHA256 | 98f62a3f60aa64894a290fb7494bfa0bfa0a199e9e052e1ac293b2ad3cd2818b |
MD5 | 1c0068b62cb2fb14a34974a507eb8674 |
BLAKE2-256 | 0b75b7848a682b83dbb2d56ed137ca49e67308fd0ec5260de0efa9ed949cf615 |
Hashes for pywin32-301-cp37-cp37m-win_amd64.whl
See [CHANGES.txt](https://github.com/mhammond/pywin32/blob/master/CHANGES.txt) for recent notable changes.
Build 228 is the last build supporting Python 2, and as part of this transition,all code in the repository is now using Python 3 syntax.To highlight and celebrate this change, build 228 is the last numbered 2XX - thefollowing build numbers start at 300.
In other words, there is no build 229 - the build numbers jump from 228 to 300.
As of build 222, pywin32 has a new home at [github](https://github.com/mhammond/pywin32).You can find build 221 and later on github and older versions can be found onthe old project home at [sourceforge](https://sourceforge.net/projects/pywin32/)
A special shout-out to @xoviat who provided enormous help with the github move!
## Support
Feel free to [open issues](https://github.com/mhammond/pywin32/issues) forall bugs (or suspected bugs) in pywin32. [pull-requests](https://github.com/mhammond/pywin32/pulls)for all bugs or features are also welcome.
However, please do not open github issues for general support requests, orfor problems or questions using the modules in this package - they will beclosed. For such issues, please email the[python-win32 mailing list](http://mail.python.org/mailman/listinfo/python-win32) -note that you must be subscribed to the list before posting.
## BinariesBy far the easiest way to use pywin32 is to grab binaries from the [most recent release](https://github.com/mhammond/pywin32/releases)
## Installing via PIP
You can install pywin32 via pip:> pip install pywin32
Note that if you want to use pywin32 for 'system wide' features, such asregistering COM objects or implementing Windows Services, then you must runthe following command from an elevated command prompt:
> python Scripts/pywin32_postinstall.py -install
## Building from source
Building from source has been simplified recently - you just need Visual Studioand the Windows 10 SDK installed (the free compilers probably work too, buthaven'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 seespecific information about dependencies. A vanilla MSVC installation shouldbe able to build most extensions and list any extensions that could not bebuilt due to missing libraries - if the build actually fails with yourconfiguration, please [open an issue](https://github.com/mhammond/pywin32/issues).
## Release process
The following steps are performed when making a new release - this is mainlyto 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.
- Commit setup.py (so the new build number is in the repo), create a new git tag
- Update setup.py with the new build number + '.1' (eg, 123.1), to ensurefuture test builds aren't mistaken for the real release.
- Make sure everything is pushed to github, including the tag (ie,git push –tags)
- Upload the .exe installers to github (using the web UI), the .whl files topypi (using py -3.5 -m twine upload dist/*XXX*.whl where XXX is the buildnumber).
- Send mail to python-win32
Release historyRelease notifications | RSS feed
301
300
228
227
226
225
224
223
222
214
210
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Filename, size | File type | Python version | Upload date | Hashes |
---|---|---|---|---|
Filename, size pywin32-301-cp35-cp35m-win32.whl (8.5 MB) | File type Wheel | Python version cp35 | Upload date | Hashes |
Filename, size pywin32-301-cp35-cp35m-win_amd64.whl (9.2 MB) | File type Wheel | Python version cp35 | Upload date | Hashes |
Filename, size pywin32-301-cp36-cp36m-win32.whl (8.5 MB) | File type Wheel | Python version cp36 | Upload date | Hashes |
Filename, size pywin32-301-cp36-cp36m-win_amd64.whl (9.2 MB) | File type Wheel | Python version cp36 | Upload date | Hashes |
Filename, size pywin32-301-cp37-cp37m-win32.whl (8.5 MB) | File type Wheel | Python version cp37 | Upload date | Hashes |
Filename, size pywin32-301-cp37-cp37m-win_amd64.whl (9.2 MB) | File type Wheel | Python version cp37 | Upload date | Hashes |
Filename, size pywin32-301-cp38-cp38-win32.whl (8.5 MB) | File type Wheel | Python version cp38 | Upload date | Hashes |
Filename, size pywin32-301-cp38-cp38-win_amd64.whl (9.3 MB) | File type Wheel | Python version cp38 | Upload date | Hashes |
Filename, size pywin32-301-cp39-cp39-win32.whl (8.5 MB) | File type Wheel | Python version cp39 | Upload date | Hashes |
Filename, size pywin32-301-cp39-cp39-win_amd64.whl (9.3 MB) | File type Wheel | Python version cp39 | Upload date | Hashes |
Install Win32serviceutil
Hashes for pywin32-301-cp35-cp35m-win32.whl
Python Win32serviceutil Install Service Pack
Algorithm | Hash digest |
---|---|
SHA256 | 93367c96e3a76dfe5003d8291ae16454ca7d84bb24d721e0b74a07610b7be4a7 |
MD5 | 044ff8954c793795e2e23d45abb02440 |
BLAKE2-256 | 68ce598fa78c2f475dfd7d24fc66e608ab2579d03a696ed6d1a3cb2cb96ad4b7 |
Hashes for pywin32-301-cp35-cp35m-win_amd64.whl
Algorithm | Hash digest |
---|---|
SHA256 | 9635df6998a70282bd36e7ac2a5cef9ead1627b0a63b17c731312c7a0daebb72 |
MD5 | 657938fd5f417843f0522bf3f5cdbab3 |
BLAKE2-256 | fc2aa91ab99796b7321359bcd1f85f95bdfdbe05b888b36e8a7a7cda1cbec8e1 |
Hashes for pywin32-301-cp36-cp36m-win32.whl
Algorithm | Hash digest |
---|---|
SHA256 | c866f04a182a8cb9b7855de065113bbd2e40524f570db73ef1ee99ff0a5cc2f0 |
MD5 | d4f772b4ddd995d945767e518df5ca50 |
BLAKE2-256 | ec98e4169c08b2d45e8a16b3b61c8d6b5a17c732ba604297b1174a427b4847cd |
Hashes for pywin32-301-cp36-cp36m-win_amd64.whl
Algorithm | Hash digest |
---|---|
SHA256 | dafa18e95bf2a92f298fe9c582b0e205aca45c55f989937c52c454ce65b93c78 |
MD5 | 9b8b83dcc3aff8a487c41b8a70ed636a |
BLAKE2-256 | c621bb0ff995c5f67786fb3d6ffbfc5160ed89d7267862123a10e0a4a2d924db |
Hashes for pywin32-301-cp37-cp37m-win32.whl
Algorithm | Hash digest |
---|---|
SHA256 | 98f62a3f60aa64894a290fb7494bfa0bfa0a199e9e052e1ac293b2ad3cd2818b |
MD5 | 1c0068b62cb2fb14a34974a507eb8674 |
BLAKE2-256 | 0b75b7848a682b83dbb2d56ed137ca49e67308fd0ec5260de0efa9ed949cf615 |
Hashes for pywin32-301-cp37-cp37m-win_amd64.whl
Algorithm | Hash digest |
---|---|
SHA256 | fb3b4933e0382ba49305cc6cd3fb18525df7fd96aa434de19ce0878133bf8e4a |
MD5 | 0838d344ac085b10768fc85ab39988d9 |
BLAKE2-256 | 84e0f7c34be2e080c248e378109c3a848cd07ab8e45e11d8dc9f1d818b3940c7 |
Hashes for pywin32-301-cp38-cp38-win32.whl
Algorithm | Hash digest |
---|---|
SHA256 | 88981dd3cfb07432625b180f49bf4e179fb8cbb5704cd512e38dd63636af7a17 |
MD5 | 338a106207120415fa8a1d7b1ea79fe9 |
BLAKE2-256 | 0f976c5a74830c5cfb8310fb291eadd95e8956fb5085673955cbcfb3f6b929c6 |
Hashes for pywin32-301-cp38-cp38-win_amd64.whl
Algorithm | Hash digest |
---|---|
SHA256 | 8c9d33968aa7fcddf44e47750e18f3d034c3e443a707688a008a2e52bbef7e96 |
MD5 | df1801730fc6e0d8a2e45119334e1cb2 |
BLAKE2-256 | cb38391371466109bd26a02047b9392fa6b0c1777deadb2f8cd4d2f699bf4574 |
Hashes for pywin32-301-cp39-cp39-win32.whl
Algorithm | Hash digest |
---|---|
SHA256 | 595d397df65f1b2e0beaca63a883ae6d8b6df1cdea85c16ae85f6d2e648133fe |
MD5 | cc26fad56c0bc1f1d9cb6bf0d08fe391 |
BLAKE2-256 | d2622c1db93c2ac7ee7f8fd91d4139905b17e91d62015848b5adaa10a6307372 |
Hashes for pywin32-301-cp39-cp39-win_amd64.whl
Algorithm | Hash digest |
---|---|
SHA256 | 87604a4087434cd814ad8973bd47d6524bd1fa9e971ce428e76b62a5e0860fdf |
MD5 | 3fe9793d6bee6e9b6515bc744f7585df |
BLAKE2-256 | 5f977a9d7028977390a9692d7176c85e51750c8e431503fc02ab3e54a8e0dcad |