【问题标题】:KeyError: 'zope' when starting some Python apps (supervisord, gunicorn, …)KeyError: 'zope' 在启动一些 Python 应用程序时(supervisord、gunicorn,...)
【发布时间】:2015-04-25 13:03:13
【问题描述】:

我不确定这个问题是否真的与 supervisord 有关,但这是我尝试启动它时得到的结果。看起来有点像这个问题与 Python2 本身有关……

$ supervisord
Traceback (most recent call last):
  File "/usr/bin/supervisord", line 5, in <module>
    from pkg_resources import load_entry_point
  File "/usr/lib/python2.7/dist-packages/pkg_resources.py", line 2727, in <module>
    add_activation_listener(lambda dist: dist.activate())
  File "/usr/lib/python2.7/dist-packages/pkg_resources.py", line 700, in subscribe
    callback(dist)
  File "/usr/lib/python2.7/dist-packages/pkg_resources.py", line 2727, in <lambda>
    add_activation_listener(lambda dist: dist.activate())
  File "/usr/lib/python2.7/dist-packages/pkg_resources.py", line 2230, in activate
    map(declare_namespace, self._get_metadata('namespace_packages.txt'))
  File "/usr/lib/python2.7/dist-packages/pkg_resources.py", line 1815, in declare_namespace
    path = sys.modules[parent].__path__
KeyError: 'zope'

我的记忆可能出卖了我,但当我尝试启动另一个程序时,我也想记得它发生在我身上,但我不记得是哪个 atm。 [1]

我使用 supervisord 来监控一个进程是否崩溃并自动重新启动它,但如果它连续崩溃,它就会放弃,我必须杀死 supervisord 并手动重新启动它。它以前可以工作,但现在不行了。

编辑: [1] 当我尝试启动 gunicorn 时也会发生。

$ /var/www/bin/gunicorn -b 127.0.0.1:5000 index:app
Traceback (most recent call last):
  File "/var/www/bin/gunicorn", line 5, in <module>
    from pkg_resources import load_entry_point
  File "/var/www/lib/python3.3/site-packages/pkg_resources.py", line 3027, in <module>
    add_activation_listener(lambda dist: dist.activate())
  File "/var/www/lib/python3.3/site-packages/pkg_resources.py", line 741, in subscribe
    callback(dist)
  File "/var/www/lib/python3.3/site-packages/pkg_resources.py", line 3027, in <lambda>
    add_activation_listener(lambda dist: dist.activate())
  File "/var/www/lib/python3.3/site-packages/pkg_resources.py", line 2514, in activate
    list(map(declare_namespace, self._get_metadata('namespace_packages.txt')))
  File "/var/www/lib/python3.3/site-packages/pkg_resources.py", line 2082, in declare_namespace
    path = sys.modules[parent].__path__
KeyError: 'zope'

编辑 2: 似乎与这个问题有关:https://bugs.launchpad.net/ubuntu/+source/zope.app.pagetemplate/+bug/851038 ......但我不确定该怎么做。 编辑编辑:也许不是,它已经 4 岁了。

是的,我也使用 Ubuntu Server。

【问题讨论】:

  • zope 命名空间中的包在某种程度上是 b0rken。您是否删除了 zope.interface 之类的内容或类似操作?
  • 好像supervisord 没有正确安装。尝试重新安装它。
  • @Valijon:不,另一个包不是。
  • @MartijnPieters 没有删除任何内容,或者我不知道。
  • 我可以离开它;很抱歉,我现在没有时间帮助您解决这个问题,但这里的 setuptools namespace package 已损坏。查看您的回溯,它是一个 gunicorn 依赖项。

标签: python gunicorn supervisord


【解决方案1】:

基于long discussion in chat,问题在于您已经弄乱了您的环境,以至于您系统上的某些 python 安装变得混乱。

您的.bashrc 文件包含export PYTHONPATH=/usr/local/lib/python3.3/dist-packages/ 行。但是,所有 Python 都将使用此路径,即使是 Python 2。

你用apt安装了supervisor和gunicorn,这些版本使用python2。当您运行 gunicorn 时,该命令使用 python2,它会选择带有 Python 3 特定内容的 PYTHONPATH。沿线的某些东西试图检查路径并以某种方式感到困惑。

删除 .bashrc 文件中修改 PYTHONPATH 的行。

【讨论】:

    猜你喜欢
    • 2017-04-14
    • 1970-01-01
    • 2017-01-13
    • 1970-01-01
    • 2022-08-04
    • 2018-03-08
    • 2015-09-28
    • 1970-01-01
    • 2020-10-13
    相关资源
    最近更新 更多