Исполняемый файл службы Windows Python запускается только в режиме отладки, а не в меню «Пуск». - PullRequest
0 голосов
/ 11 января 2019

Я пытаюсь создать службу 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:

Если это даст вам подсказку: при запуске сценария (установка / запуск / остановка) я получаю некоторые отзывы, такие как «Установка службы» или «Запуск службы». Когда я запускаю исполняемый файл, я не получаю такой обратной связи.

1 Ответ

0 голосов
/ 14 января 2019

Пожалуйста, посмотрите на cx_Freeze пример службы Windows : похоже, вам нужно использовать base='Win32Service', а также другую структуру проекта.

Возможно, вам понадобятся некоторые дополнительные модификации, чтобы он работал с Python 3, см. Исполняемый файл Python 3 в качестве службы Windows .

РЕДАКТИРОВАТЬ: может быть, это: Наличие нескольких проблем со службой Python для Windows (построено с pyinstaller) также полезно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...