【发布时间】: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