【问题标题】:ImportError; and zipimporters disappeared from pkgutil.iter_importers()导入错误;并且 zipimporters 从 pkgutil.iter_importers() 中消失了
【发布时间】:2011-11-24 00:17:01
【问题描述】:

我有一个 Django 实例,它神秘地无法导入 memcache ......之后(在运行一段时间后发生的一些未知事件就好了。)

LAMP 配置:

  • RHEL 5.7
  • Apache 2.2.3
  • mod_wsgi 2.3(动态链接到 Python2.5.4 .so)
  • Python 2.5.4
  • Django 1.2

memcache 位于:/usr/local/lib/python2.5/site-packages/python_memcached-1.44-py2.5.ee/memcache.pyc

如果我打开一个命令 shell 和 import memcache,它会正常导入。

有一段时间,在 Django 中,import memcache 工作得很好。

但是在一些未知事件之后,导入失败:ImportError: No module named memcache

就在故障点之前,我记录了系统路径,该路径明确包括/usr/local/lib/python2.5/usr/local/lib/python2.5/site-packages

我还记录了对pkgutil.iter_importers() 的响应,并发现了一些有趣的东西:在失败点,iter_importers 没有任何 zipimporters 的功能——它是一个 zipimporter,需要查看 egg 内部并找到 memcache。

如果我手动导入内存缓存,它会起作用:

try:
    import memcache
except ImportError:
    import zipimport
    zi = zipimport.zipimporter('/usr/local/lib/python2.5/site-packages/python_memcached-1.44-py2.5.egg')
    memcache = zi.load_module('memcache')

发生了什么事?如果没有解决方法,我该怎么做才能使其正常工作?

【问题讨论】:

    标签: python import egg python-import


    【解决方案1】:

    好的。我找到了答案。在 64 位计算机上 Python 2.5 的 os.listdir C 实现中有 a bug。当我申请 the patch, 时,一切都会永久有效。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-03-31
      • 1970-01-01
      • 2016-01-10
      • 2021-10-11
      • 2017-05-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多