Creating Python daemon - 'module' object has no attribute 'DaemonContext'

Ben McCann picture Ben McCann · Mar 21, 2012 · Viewed 8.5k times · Source

I'm trying to daemonize my app and am getting the error:

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

It looks like other people are getting this error from the module not being installed. As a newcomer to Python it's a bit confusing that there is a daemon and python-daemon package and also there's two ways of installing python packages (sudo apt-get install and sudo pip install). However, it seems like I have the package installed. I have Python 2.6 installed on Ubuntu 10.04. Any ideas?

It looks like I have the module installed:

# 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

More evidence the module is installed:

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

Answer

Reijo Korhonen picture Reijo Korhonen · Aug 18, 2013

I run on this proglem too. If I call print daemon.__file__ it prints /usr/local/lib/python2.6/dist-packages/daemon.pyc, which is right file in wrong place, meaning that I have installed packege wrong way.

I used command "sudo pip install daemon", which installs only daemon.py file. We should use commnd "sudo pip install python-daemon", which installs whole package. After that print daemon.__file__ prints /usr/local/lib/python2.6/dist-packages/daemon/__init__.pyc, meaning that I have installed python-daemon -package, not just one python file daemon.py.

Confusing, but it was my own fault.

Remember to call "sudo pip uninstall daemon" before giving right installing command sudo pip uninstall python-daemon".