我正在尝试守护我的应用并收到错误:
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']
答案 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