创建Python守护程序 - 'module'对象没有属性'DaemonContext'

时间:2012-03-20 23:52:04

标签: python python-daemon

我正在尝试守护我的应用并收到错误:

out:     with daemon.DaemonContext():
out: AttributeError: 'module' object has no attribute 'DaemonContext'

看起来其他人从未安装的模块中收到此错误。作为Python的新手,有一个令人困惑的是有一个守护进程和python-daemon包,还有两种安装python包的方法(sudo apt-get install和sudo pip install)。但是,似乎我安装了包。我在Ubuntu 10.04上安装了Python 2.6。有什么想法吗?

看起来我安装了模块:

# pip freeze
LEPL==5.0.0
MySQL-python==1.2.2
distribute==0.6.10
lockfile==0.8
matplotlib==0.99.1.1
numpy==1.3.0
pyparsing==1.5.2
python-apt==0.7.94.2ubuntu6.4
python-daemon==1.5.2
python-dateutil==1.4.1
pytz==2010b
rpy2==2.0.8
wsgiref==0.1.2

更多证据表明已安装该模块:

$ python
>>> import daemon
>>> dir(daemon)
['DaemonContext', '__builtins__', '__doc__', '__file__', '__name__', '__package__', '__path__', '_copyright', '_license', '_url', '_version', 'daemon', 'version']

3 个答案:

答案 0 :(得分:16)

产生错误的程序显然使用名为daemon不同的模块。您是否可以调用程序本身或同一目录中的另一个模块daemon.py?如果是这样,那么将影响已安装的daemon模块。重命名daemon.py(并删除Python将创建的daemon.pyc文件),然后重试。

如果您没有看到任何影子daemon.py,请打开您的应用程序daemon.__file__并查看其导入位置。

答案 1 :(得分:16)

我也在这个proglem上运行。如果我拨打print daemon.__file__,则会打印/usr/local/lib/python2.6/dist-packages/daemon.pyc,这是正确的文件位置错误,这意味着我已经错误地安装了包装。

我使用了命令“sudo pip install daemon”,它只安装daemon.py文件。我们应该使用commnd “sudo pip install python-daemon”,它安装整个包。之后print daemon.__file__打印/usr/local/lib/python2.6/dist-packages/daemon/__init__.pyc,这意味着我已经安装了python-daemon -package,而不仅仅是一个python文件daemon.py。

令人困惑,但这是我自己的错。

在给出正确的安装命令sudo pip uninstall python-daemon之前,请记得调用“sudo pip uninstall daemon”。

答案 2 :(得分:1)

pip uninstall daemon
pip install python-daemon