1

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

灯配置:

  • RHEL 5.7
  • 阿帕奇 2.2.3
  • mod_wsgi 2.3(动态链接到 Python2.5.4 .so)
  • Python 2.5.4
  • 姜戈 1.2

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

如果我打开一个命令外壳,并且import memcache,它导入就好了。

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

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

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

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

如果我手动导入 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')

到底是怎么回事?如果没有解决方法,我该怎么做才能使它工作?

4

1 回答 1

0

好的。我找到了答案。在 64 位计算机上 Python 2.5 的 os.listdir C 实现中存在一个错误。当我应用补丁时,一切都会永久有效。

于 2011-10-19T22:34:46.933 回答