Python win32:错误

时间:2016-03-23 19:43:08

标签: python pywin32

我正在尝试将python脚本作为Windows服务运行。

为了了解一点,我从here获取了这段代码。

我安装了以下内容:

  1. python2.7(64位)
  2. pywin32.exe。 (64位)
  3. 但是,该脚本无法找到以下内容:

    1. win32event.CreateEvent
    2. win32event.WAIT_OBJECT_0
    3. win32event.WaitForSingleObject(self.hWaitStop,5000)
    4. win32service.SERVICE_STOP_PENDING)
    5. win32event.SetEvent
    6. 虽然我没有收到导入的任何错误消息,但我收到上述功能的错误消息。

      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 个答案:

答案 0 :(得分:2)

我尝试从sourceforge.net网站重新安装win32。但它没有成功。

最后我尝试了pip命令,它就像魅力一样。

pip install pypiwin32