12

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

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

看起来其他人从未安装的模块中收到此错误。作为 Python 的新手,有一个 daemon 和 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

3 回答 3

21

我也在这个程序上运行。如果我称它为print daemon.__file__prints /usr/local/lib/python2.6/dist-packages/daemon.pyc,这是错误位置的正确文件,这意味着我以错误的方式安装了packege。

我使用了命令“sudo pip install daemon”,它只安装 daemon.py 文件。我们应该使用命令“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”。

于 2013-08-18T15:48:48.700 回答
20

产生错误的程序显然使用了一个名为daemon. 您是否调用了程序本身或同一目录中的另一个模块daemon.py

如果是这样,那将隐藏已安装的daemon模块。

解决方案

重命名daemon.py(并删除daemon.pycPython 将创建的文件)并重试。

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

于 2012-03-21T00:16:42.757 回答
2
pip uninstall daemon
pip install python-daemon
于 2021-06-16T22:19:24.553 回答