ImportError;и zipimporters исчезли из pkgutil.iter_importers () - PullRequest
1 голос
/ 24 сентября 2011

У меня есть экземпляр Django, который таинственным образом не способен импортировать memcache ... after (какое-то неизвестное событие, которое происходит после определенного периода работы.)

Конфигурация 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

Если я открою командную оболочку и 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это необходимо, чтобы заглянуть внутрь яйца и найти memcache.

Если я вручную импort 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')

Что происходит?Что я могу сделать, чтобы это работало без обходного пути?

1 Ответ

0 голосов
/ 20 октября 2011

Хорошо. Я нашел ответ. В реализации os.listdir C на Python 2.5 на 64-битных компьютерах есть ошибка . Когда я применил патч, все работает постоянно.

...