2017-11-20 10 views
0

나는이 스크립트 오류가 발생합니다 :파이썬 데몬 라이브러리 가져 오기 오류

Traceback (most recent call last): 
    File "dtest2.py", line 5, in <module> 
    class MyDaemon(Daemon): 
NameError: name 'Daemon' is not defined 

내가 잘못 뭐하는 거지 :

#!/usr/bin/env python 

import sys, time, daemon 

class MyDaemon(Daemon): 
    def run(self): 
     while True: 
      time.sleep(1) 

if __name__ == "__main__": 
    daemon = MyDaemon('/tmp/daemon-example.pid') 
    if len(sys.argv) == 2: 
     if 'start' == sys.argv[1]: 
      daemon.start() 
     elif 'stop' == sys.argv[1]: 
      daemon.stop() 
     elif 'restart' == sys.argv[1]: 
      daemon.restart() 
     else: 
      print("Unknown command") 
      sys.exit(2) 
     sys.exit(0) 
    else: 
     print("usage: %s start|stop|restart" % sys.argv[0]) 
     sys.exit(2) 

그것은 다음과 같은 오류가 산출? 나는 'sudo pip install daemon'이라는 데몬을 설치했다.

업데이트 : @DeepSpace에서 조언 다음 나는에 코드를 변경 :

#!/usr/bin/env python 

import sys, time, daemon 

class MyDaemon(daemon.Daemon): 
    def run(self): 
     while True: 
      time.sleep(1) 

if __name__ == "__main__": 
    daemon = MyDaemon('/tmp/daemon-example.pid') 
    if len(sys.argv) == 2: 
     if 'start' == sys.argv[1]: 
      daemon.start() 
     elif 'stop' == sys.argv[1]: 
      daemon.stop() 
     elif 'restart' == sys.argv[1]: 
      daemon.restart() 
     else: 
      print("Unknown command") 
      sys.exit(2) 
     sys.exit(0) 
    else: 
     print("usage: %s start|stop|restart" % sys.argv[0]) 
     sys.exit(2) 

... 그리고 다른 오류

Traceback (most recent call last): 
    File "dtest.py", line 3, in <module> 
    import sys, time, daemon 
    File "/usr/local/lib/python3.6/site-packages/daemon.py", line 70 
    os.umask(022) # Don't allow others to write 
      ^
SyntaxError: invalid token 

어떤 제안을 산출?

답변

1

import sys, time, daemonDaemon 클래스는 어디에서 왔는지 통역사에게 알리지 않습니다.

어느 변경 class MyDaemon(daemon.Daemon)-class MyDaemon(Daemon),

또는 변화

import sys, time, daemon

PEP8 each import should be on its own line anyway 따르면

import sys 
import time 
from daemon import Daemon 

한다.

+0

아무런 차이가 없었습니다. 조언에 따라 import 문을 변경하고 MyDaemon (Daemon) 클래스를 MyDaemon (daemon.Daemon) 클래스로 변경하려고 시도했습니다. 나는 'ImportError : No daemon'모듈을 얻습니다. 나는 무엇을 잘못합니까 ??? – alkopop79

+0

@ alkopop79 두 가지 중 하나를 변경해야합니다. * 둘 다 변경하면 안됩니다. 가장 최근의 코드와 가장 최근의 오류가 포함되도록 질문을 업데이트하십시오. ** 또한 **는 스크립트의 이름이 daemon.py가 아닌지 확인합니다. – DeepSpace