Можно ли написать службу Windows с помощью Python?

Python имеет пакет win32service , который, как представляется, позволяет создавать службы Windows. Я внимательно проверил доступные примеры Google, например, это: возможно ли запустить скрипт Python в качестве службы в Windows? Если возможно, как?

Я разместил код в ~/Documents/test.py и выполнил следующую команду в командной строке с повышенными ~/Documents/test.py :

 > python test.py install > python test.py debug 

К сожалению, каждый пример, который я попробовал, завершился с ошибкой:

 Debugging service TestService - press Ctrl+C to stop. Error 0xC0000005 - Python could find the service class in the module AttributeError: 'module' object has no attribute 'AppServerSvc' (null): (null) 

Я протестировал его с последней версией ActivePython (2.7.2.5 32-бит) на 64-разрядной 64-разрядной и 64-разрядной версии Windows 8. Конечно, если сервис запускается через сервис-менеджера, он также не запускается.

Я что-то делаю неправильно, или Python не предназначен для использования для создания сервисов в современных операционных системах? Может быть, мне нужна конкретная версия windows / python / pywin32? Конечно, я могу вручную протестировать все комбинации, начиная с Windows XP, но это займет много времени 🙁 Может быть, кто-то уже имеет опыт работы с Python и службами Windows и может намекнуть мне, что я делаю неправильно?

Обновить

Протестировано на 32-битном виртуальном macine Windows XP (тот же код, тот же самый дистрибутив activepython) – та же ошибка.

Похоже, что в сборке ActiveState для PyWin32 есть ошибка. Установка ActiveState python 2.7.2.5 и запуск связанного примера кода выше, я получаю ту же ошибку, о которой вы сообщаете.

Но если я загружаю Python 2.7.3 (2.7.2.5, похоже, не доступен для загрузки) и добавить PyWin32 build 214 (ActiveState, похоже, использует версию PyWin32 214). Тогда все работает нормально. Я также пробовал последнюю версию PyWin32 (218), и она также работала правильно.

Поэтому я думаю, вы можете попытаться сообщить о проблеме ActiveState (у меня нет контракта на поддержку с ними), и если у вас нет требования использовать ActiveState, вы можете просто переключиться на стандартные сборки Python.

Я использую сервисы со стандартными сборками Python в течение многих лет, работая на всех с Windows 2000 до Server 2008 и Windows 7 без проблем. Поэтому у меня есть все основания полагать, что это сработает и для вас.

Если вы хотите работать с ActiveState, чтобы устранить проблему, то ошибка возникает в их создании PythonService.cpp в функции LoadPythonServiceInstance. Я просмотрел записи реестра, которые были созданы, и они выглядят отлично, это проблема PythonService.exe при загрузке вашего класса. Основываясь на сообщении об ошибке, он, похоже, правильно загрузил модуль и с трудом обнаруживает класс.