Я пытаюсь создать службу Windows, используя python, и начал с использования этого примера службы. Как скрипт работает, он устанавливается, запускается при наличии флага Start. Но по причинам переносимости я хочу создать исполняемый файл, из которого можно запустить службу, поэтому я использовал для этого cx_Freeze (код ниже - я знаю, что там есть несколько дополнительных пакетов, но это не не влияет на процесс, или, по крайней мере, я так не думаю).
from cx_Freeze import setup, Executable
import os
import sys
PYTHON_INSTALL_DIR = os.path.dirname(os.path.dirname(os.__file__))
os.environ['TCL_LIBRARY'] = os.path.join(PYTHON_INSTALL_DIR, 'tcl', 'tcl8.6')
os.environ['TK_LIBRARY'] = os.path.join(PYTHON_INSTALL_DIR, 'tcl', 'tk8.6')
base = None
if sys.platform == "win32":
base = "Win32GUI"
executables = [Executable(script="PythonCornerExample.py",
targetName="PythonCornerExample.exe", base=base)]
packages = ["time", "datetime", "os", "sqlite3", "win32timezone"]
options = {
'build_exe': {
'packages':packages,
'include_files': [
os.path.join(PYTHON_INSTALL_DIR, 'DLLs', 'tk86t.dll'),
os.path.join(PYTHON_INSTALL_DIR, 'DLLs', 'tcl86t.dll')
],
},
}
setup(
name = "PythonCornerExample",
options = options,
description = 'Bla bla',
executables = executables
)
Запуск службы с использованием нового исполняемого файла теперь работает, только если я использую флаг отладки и не могу понять, почему. При использовании флага «Пуск» он ничего не делает, и если я пытаюсь запустить его из служб Windows, я получаю сообщение «Служба не ответила на запрос запуска или управления своевременно». ошибка.
Я добавил путь к исполняемому файлу в PATH в системных переменных, я запускаю cmd от имени администратора, я скопировал pythoncom36.dll из папки pywin32_system32 в папку win32 в пакетах сайта python, я дал разрешение пользователям в реестре Редактор ..
Если есть что-то, что вы думаете, я пропустил, пожалуйста, поделитесь!
Я использую python3.6 на Windows7 и использую cx_Freeze 5.1.1.
UPDATE:
Если это даст вам подсказку: при запуске сценария (установка / запуск / остановка) я получаю некоторые отзывы, такие как «Установка службы» или «Запуск службы». Когда я запускаю исполняемый файл, я не получаю такой обратной связи.