2016-03-23 10 views
1

pythonスクリプトをWindowsサービスとして実行しようとしています。Python win32:エラー

ちょっとしたことを理解するために、このコードをhereから取得しました。私は、次のものをインストールしている

  1. python2.7(64ビット)
  2. pywin32.exe。しかし、スクリプトは次のようなものを見つけることができない(64ビット)

  1. win32event.CreateEvent
  2. win32event.WAIT_OBJECT_0
  3. win32event.WaitForSingleObject(self.hWaitStop、5000 )
  4. win32service.SERVICE_STOP_PENDING)
  5. win32event.SetEvent

インポートのエラーメッセージは表示されませんが、前述の機能に関するエラーメッセージが表示されます。

import win32service 
import win32serviceutil 
import win32event 

class PySvc(win32serviceutil.ServiceFramework): 
# you can NET START/STOP the service by the following name 
_svc_name_ = "PySvc" 
# this text shows up as the service name in the Service 
# Control Manager (SCM) 
_svc_display_name_ = "Python Test Service" 
# this text shows up as the description in the SCM 
_svc_description_ = "This service writes stuff to a file" 

def __init__(self, args): 
    win32serviceutil.ServiceFramework.__init__(self,args) 
    # create an event to listen for stop requests on 
    self.hWaitStop = win32event.CreateEvent(None, 0, 0, None) 

# core logic of the service  
def SvcDoRun(self): 
    import servicemanager 

    f = open('test.dat', 'w+') 
    rc = None 

    # if the stop event hasn't been fired keep looping 
    while rc != win32event.WAIT_OBJECT_0: 
     f.write('TEST DATA\n') 
     f.flush() 
     # block for 5 seconds and listen for a stop event 
     rc = win32event.WaitForSingleObject(self.hWaitStop, 5000) 

    f.write('SHUTTING DOWN\n') 
    f.close() 

# called when we're being shut down  
def SvcStop(self): 
    # tell the SCM we're shutting down 
    self.ReportServiceStatus(win32service.SERVICE_STOP_PENDING) 
    # fire the stop event 
    win32event.SetEvent(self.hWaitStop) 

if __name__ == '__main__': 
    win32serviceutil.HandleCommandLine(PySvc) 

答えて

1

sourceforge.netサイトからwin32を再インストールしようとしました。しかしそれはうまくいかなかった。

最後に私はpipコマンドを試してみましたが、それは魅力的でした。

pip install pypiwin32