pyinstaller Ошибка запуска службы: служба не ответила на запрос запуска или управления своевременно - PullRequest
0 голосов
/ 28 декабря 2018

Я пару дней искал решение безуспешно.У нас есть сборка службы Windows для копирования некоторых файлов из одного места в другое.

Так что я строю код, показанный ниже, с Python 3.7.Полное кодирование можно найти на Github .

Когда я запускаю службу с использованием python, все работает нормально, я могу установить службу и запустить ее.

Это с помощью команд:

Установите службу:

  • python jis53_backup.py install

Запустите службу:

  • python jis53_backup.py start

Когда я сейчас компилирую этот код, используя pyinstaller с командой:

  • pyinstaller -F --hidden-import = win32timezone jis53_backup.py

После создания exe-файла я могу установить сервис, но при попытке запустить сервис я получаю сообщение об ошибке:

Ошибка запуска службы: служба не ответила на запрос запуска или управления своевременно

Я просмотрел несколько сообщений в Stackoverflow и Google, связанных с этой ошибкой, однако безуспешно.У меня нет возможности установить программы на Python 3.7 на ПК, которые должны были бы запускать этот сервис.Вот почему мы пытаемся получить сборку .exe.

Я обновил путь в соответствии с информацией, которую я нашел в разных вопросах.

Изображение определений пути:

enter image description here

Я также скопировал файл pywintypes37.dll.

От -> Python37 \ Lib \ site-packages \pywin32_system32

To -> Python37 \ Lib \ site-packages \ win32

У кого-нибудь есть какие-либо другие предложения о том, как заставить это работать?

'''
    Windows service to copy a file from one location to another
    at a certain interval.
'''
import sys
import time
from distutils.dir_util import copy_tree

import servicemanager
import win32serviceutil

import win32service
from HelperModules.CheckFileExistance import check_folder_exists, create_folder
from HelperModules.ReadConfig import (check_config_file_exists,
                                      create_config_file, read_config_file)
from ServiceBaseClass.SMWinService import SMWinservice

sys.path += ['filecopy_service/ServiceBaseClass',
             'filecopy_service/HelperModules']


class Jis53Backup(SMWinservice):
    _svc_name_ = "Jis53Backup"
    _svc_display_name_ = "JIS53 backup copy"
    _svc_description_ = "Service to copy files from server to local drive"

    def start(self):
        self.conf = read_config_file()
        if not check_folder_exists(self.conf['dest']):
            create_folder(self.conf['dest'])

        self.isrunning = True

    def stop(self):
        self.isrunning = False

    def main(self):
        self.ReportServiceStatus(win32service.SERVICE_RUNNING)
        while self.isrunning:
            # Copy the files from the server to a local folder
            # TODO: build function to trigger only when a file is changed.
            copy_tree(self.conf['origin'], self.conf['dest'], update=1)
            time.sleep(30)


if __name__ == '__main__':
    if sys.argv[1] == 'install':
        if not check_config_file_exists():
            create_config_file()

    if len(sys.argv) == 1:
        servicemanager.Initialize()
        servicemanager.PrepareToHostSingle(Jis53Backup)
        servicemanager.StartServiceCtrlDispatcher()
    else:
        win32serviceutil.HandleCommandLine(Jis53Backup)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...