2012-03-20 168 views
7

我想守护进程我的应用程序,并正在错误:创建Python的守护 - “模块”对象有没有属性“DaemonContext”

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'] 
+4

我也有这个问题,但事实证明我做了'PIP2的时候我应该安装daemon'已经完成了'pip2 install python-daemon',它解决了我的问题 – kristianlm 2013-07-19 09:51:01

回答

14

产生显然是使用名为daemon一个不同模块错误的程序。您是否可能会将该程序本身或其他模块称为daemon.py?如果是这样,则会影响安装的daemon模块。重命名daemon.py(并删除Python将创建的daemon.pyc文件)并重试。

如果您没有看到任何影子daemon.py,请让您的应用程序打印daemon.__file__并查看它从哪里导入。

+1

谢谢!我的脚本被命名为daemon.py,我没有意识到这会导致问题。调用“print daemon .__ file__”也非常有用。 – 2012-03-21 00:34:42

15

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

我使用了命令“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-packages,而不仅仅是一个python文件daemon.py。

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

记住给予正确的安装命令:sudo PIP卸载蟒蛇守护”之前调用“命令PIP卸载守护进程”。

相关问题