Уведомления

Группа в Telegram: @pythonsu

#1 Фев. 2, 2014 21:28:45

Doktopat
Зарегистрирован: 2013-06-15
Сообщения: 55
Репутация: +  0  -
Профиль   Отправить e-mail  

Скомпилировать так ,что бы работало на компах без Питона а также создать Сервис

Здравствуйте всем!
Имеется програмка,которую я выложил
Програмка вырезает выделенные файлы и вставляет их на флэшку в папку БАГ.
Нужно скомпилировать этот скрипт так,что бы работал на Винде ,причем не только 7ке а и на Эскпи. А также на этих компах не стоит питон и хочется ,что бы это выглядело как сервис и поднималось с компом
скрипт работает при нажатии WIN+'z' и завершает работу при нажатии на WIN+'q'

На сколько помню я создавал сборку используя py2exe ,также что бы работало на компах без питона нужно было какой то дистрибутив Си добавить. Но я получу в конце папку с файлом Exe. Как же тогда его поставить как сервис ……

import win32serviceutil
import win32service
import win32event
import servicemanager
 
class AppServerSvc (win32serviceutil.ServiceFramework):
    _svc_name_ = "DummyService"
    _svc_display_name_ = "Dummy Service"
    _svc_description_ = "Dummy Service Description"
 
    def __init__(self,args):
        win32serviceutil.ServiceFramework.__init__(self,args)
        self.hWaitStop = win32event.CreateEvent(None,0,0,None)
        self.hWaitResume = win32event.CreateEvent(None, 0, 0, None)
        self.timeout = 10000 #Пауза между выполнением основного цикла службы в миллисекундах
        self.resumeTimeout = 1000
        self._paused = False
 
    def SvcStop(self):
        self.ReportServiceStatus(win32service.SERVICE_STOP_PENDING)
        win32event.SetEvent(self.hWaitStop)
        servicemanager.LogMsg(servicemanager.EVENTLOG_INFORMATION_TYPE,
                              servicemanager.PYS_SERVICE_STOPPED,
                              (self._svc_name_, ''))
       
    def SvcPause(self):
        self.ReportServiceStatus(win32service.SERVICE_PAUSE_PENDING)
        self._paused = True
        self.ReportServiceStatus(win32service.SERVICE_PAUSED)
        servicemanager.LogInfoMsg("The %s service has paused." % (self._svc_name_, ))
   
    def SvcContinue(self):
        self.ReportServiceStatus(win32service.SERVICE_CONTINUE_PENDING)
        win32event.SetEvent(self.hWaitResume)
        self.ReportServiceStatus(win32service.SERVICE_RUNNING)
        servicemanager.LogInfoMsg("The %s service has resumed." % (self._svc_name_, ))
               
 
    def SvcDoRun(self):
        servicemanager.LogMsg(servicemanager.EVENTLOG_INFORMATION_TYPE,
                              servicemanager.PYS_SERVICE_STARTED,
                              (self._svc_name_,''))
        self.main()  
   
    #В этом методе реализовываем нашу службу    
    def main(self):
        #Здесь выполняем необходимые действия при старте службы
        servicemanager.LogInfoMsg("Hello! I'm a Dummy Service.")
        while True:
            #Здесь должен находиться основной код сервиса
            servicemanager.LogInfoMsg("I'm still here.")
           
            #Проверяем не поступила ли команда завершения работы службы
            rc = win32event.WaitForSingleObject(self.hWaitStop, self.timeout)
            if rc == win32event.WAIT_OBJECT_0:
                #Здесь выполняем необходимые действия при остановке службы
                servicemanager.LogInfoMsg("Bye!")
                break
 
            #Здесь выполняем необходимые действия при приостановке службы
            if self._paused:
                servicemanager.LogInfoMsg("I'm paused... Keep waiting...")
            #Приостановка работы службы                
            while self._paused:
                #Проверям не поступила ли команда возобновления работы службы
                rc = win32event.WaitForSingleObject(self.hWaitResume, self.resumeTimeout)
                if rc == win32event.WAIT_OBJECT_0:
                    self._paused = False
                    #Здесь выполняем необходимые действия при возобновлении работы службы
                    servicemanager.LogInfoMsg("Yeah! Let's continue!")
                    break                  
 
if __name__ == '__main__':
    win32serviceutil.HandleCommandLine(AppServerSvc)

Вроде есть вот этот код ,который даст возможность запустить как сервис:
myservice.py install

Но тогда это файлы питона ,а мне то надо на компьютерах без питона запускать…
В общем или так или так…..

Подскажите как можно вывернуться из этой ситуации

Прикреплённый файлы:
attachment last_copy.rar (7,4 KБ)

Офлайн

#2 Фев. 2, 2014 21:47:00

Shaman
Зарегистрирован: 2013-03-15
Сообщения: 1369
Репутация: +  88  -
Профиль   Отправить e-mail  

Скомпилировать так ,что бы работало на компах без Питона а также создать Сервис

Имхо, правильный путь - устанавливать интерпретатор в систему, на ряду с дотнетами и прочим.

Офлайн

#3 Фев. 2, 2014 22:08:29

Doktopat
Зарегистрирован: 2013-06-15
Сообщения: 55
Репутация: +  0  -
Профиль   Отправить e-mail  

Скомпилировать так ,что бы работало на компах без Питона а также создать Сервис

я не могу ходить по всей компании и всем ставить интерпретатор

нашел такое:
http://www.py2exe.org/index.cgi/Tutorial#Step3

почитал про дистрибутив C
в папку с прогой кинул этот файл: msvcr90.dll он в архиве уже
затем написал setup.py он тоже в архиве
запустил python setup.py py2exe
все пробежало и скомпилировалось.
нашел получившиеся файлы, но почему то запуская файл copy_to_flash.exe и затем пытаясь запустить скрипт ничего не происходит
То есть в IDE работает ,а там нет……
Кто подскажет в чем проблема

Прикреплённый файлы:
attachment last_copy.rar (250,5 KБ)

Офлайн

#4 Фев. 2, 2014 22:09:41

bs0d
Зарегистрирован: 2014-02-01
Сообщения: 76
Репутация: +  2  -
Профиль   Отправить e-mail  

Скомпилировать так ,что бы работало на компах без Питона а также создать Сервис

C:\Usersдминистратор>sc create -help
сюда не пробовали капнуть? инсталлить средствами самой винды, через батник

+для ознакомления

Отредактировано bs0d (Фев. 2, 2014 22:11:43)

Офлайн

#5 Фев. 2, 2014 22:12:07

Doktopat
Зарегистрирован: 2013-06-15
Сообщения: 55
Репутация: +  0  -
Профиль   Отправить e-mail  

Скомпилировать так ,что бы работало на компах без Питона а также создать Сервис

Поправка - запуская copy_to_flash.py файл из cmd все работает на ура ,а вот после компиляции почему то нет

Офлайн

#6 Фев. 2, 2014 22:13:36

Doktopat
Зарегистрирован: 2013-06-15
Сообщения: 55
Репутация: +  0  -
Профиль   Отправить e-mail  

Скомпилировать так ,что бы работало на компах без Питона а также создать Сервис

я пока ничего не инсталлирую . Я лишь компилирую свой код в байд код ,на сколько я понимаю…..

Офлайн

#7 Фев. 3, 2014 06:13:06

sanodin
От:
Зарегистрирован: 2011-06-16
Сообщения: 515
Репутация: +  31  -
Профиль   Отправить e-mail  

Скомпилировать так ,что бы работало на компах без Питона а также создать Сервис

Doktopat
Поправка - запуская copy_to_flash.py файл из cmd все работает на ура ,а вот после компиляции почему то нет
Запускай exe в комстроке, должно показать если есть ошибки, если нет, пробуй собрать exe с cx_Freze

И собирая проект в exe, вы лишь упаковываете python, делая его портабельным, отсекая лишние библиотеки, потом все равно будете устанавливать по всей компании
если не получится с exe, собирите сами python с проетом в архив или инсталер и все

Отредактировано sanodin (Фев. 3, 2014 06:33:07)

Офлайн

#8 Фев. 3, 2014 09:00:50

Doktopat
Зарегистрирован: 2013-06-15
Сообщения: 55
Репутация: +  0  -
Профиль   Отправить e-mail  

Скомпилировать так ,что бы работало на компах без Питона а также создать Сервис

Начал вчитываться в лог билда…
прикрепил его

Прикреплённый файлы:
attachment missing.jpg (482,0 KБ)

Офлайн

#9 Фев. 3, 2014 09:01:53

Doktopat
Зарегистрирован: 2013-06-15
Сообщения: 55
Репутация: +  0  -
Профиль   Отправить e-mail  

Скомпилировать так ,что бы работало на компах без Питона а также создать Сервис

Затем все же запустил ехе через командную строку
результат прикрепил

Прикреплённый файлы:
attachment run_of_exe.jpg (436,4 KБ)

Офлайн

#10 Фев. 3, 2014 09:09:48

sanodin
От:
Зарегистрирован: 2011-06-16
Сообщения: 515
Репутация: +  31  -
Профиль   Отправить e-mail  

Скомпилировать так ,что бы работало на компах без Питона а также создать Сервис

Добавить в сборку недостающие модули

C:\Python27\Lib\site-packages\pywinauto\tests\allcontrols.pyc

Отредактировано sanodin (Фев. 3, 2014 09:15:52)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version