2012-03-20 17 views
7

Estoy intentando demonizar mi aplicación y estoy consiguiendo el error:Creación de Python demonio - objeto 'módulo' no tiene atributo 'DaemonContext'

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

Parece que otras personas están recibiendo este error desde el módulo no está siendo instalado. Como recién llegado a Python, es un poco confuso que haya un paquete daemon y python-daemon y también hay dos formas de instalar paquetes de python (sudo apt-get install y sudo pip install). Sin embargo, parece que tengo el paquete instalado. Tengo Python 2.6 instalado en Ubuntu 10.04. ¿Algunas ideas?

Parece que tengo el módulo instalado:

# 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 

Más evidencia de que el módulo está instalado:

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

también tuve este problema, pero resultó que había hecho' PIP2 instalar daemon' cuando debería he hecho 'pip2 install python-daemon', que me lo resolvió – kristianlm

Respuesta

14

El programa que produce el error aparentemente está utilizando un módulo diferente llamado daemon . ¿Quizás llamó al programa en sí, u otro módulo en el mismo directorio, daemon.py? Si es así, eso sombreará el módulo daemon instalado. Cambie el nombre a daemon.py (y elimine el archivo daemon.pyc que Python habrá creado) y vuelva a intentarlo.

Si no ve nada sombreando daemon.py, haga que su aplicación imprima daemon.__file__ y vea desde dónde se importa.

+1

¡Gracias! Mi script se llamaba daemon.py y no me di cuenta de que eso causaría un problema. Llamar a" print daemon .__ file__ "fue muy útil también . –

15

También uso este proglem. Si llamo al print daemon.__file__, imprime /usr/local/lib/python2.6/dist-packages/daemon.pyc, que es el archivo correcto en el lugar incorrecto, lo que significa que he instalado el paquete incorrectamente.

Utilicé el comando "sudo pip install daemon", que instala solo el archivo daemon.py. Deberíamos usar commnd "sudo pip install python-daemon", que instala todo el paquete. Después de eso, print daemon.__file__ imprime /usr/local/lib/python2.6/dist-packages/daemon/__init__.pyc, lo que significa que he instalado python-daemon -package, no solo un archivo python daemon.py.

Confuso, pero fue mi culpa.

Recuerde llamar "sudo pip demonio de desinstalación" antes de dar a la instalación correcta comando sudo desinstalación pip pitón-daemon".

Cuestiones relacionadas