2017-11-20 33 views
0

私は、このスクリプトでエラーが発生します。Pythonのデーモンライブラリのインポートエラー

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'でデーモンをインストールしました。

UPDATE:@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

いずれも違いはありません。あなたのアドバイスに従ってインポート文を変更し、クラスMyDaemon(daemon)をクラスMyDaemon(daemon.Daemon)に変更しようとしました。私は 'ImportError:No module daemon'を取得します。私は何が間違っているのですか? – alkopop79

+0

@ alkopop79あなたはどちらかを変更してください。最新のコードと最新のエラーが含まれるように質問を更新してください。 **また、**あなたのスクリプトの名前が万一daemon.pyでないことを確認してください。 – DeepSpace

関連する問題