我有一个 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.5
and /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')
到底是怎么回事?如果没有解决方法,我该怎么做才能使它工作?