Назад | Перейти на главную страницу

Windows + Django + mod_wsgi = «Ошибка загрузки DLL»

Долгое время я использовал Python 2.5, чтобы делать все это нормально, но недавно обновился до 2.7, так как создание материала для 2.5 - настоящая боль. Я также обновил mod_wsgi до 3.3 для Python 2.7.

Все работает нормально с Apache + mod_wsgi в CentOS, а также на сервере запуска Django как в Windows, так и в CentOS, но не с Apache + mod_wsgi в Windows.

Всякий раз, когда я пытаюсь получить доступ к странице в моем приложении Django, я получаю следующее (обратите внимание, что Apache запускается нормально):

ImportError at /
DLL load failed: The specified module could not be found.

Это вызвано такими вещами, как:

from Crypto.Cipher import AES

Etree и другие вызывают ту же ошибку, и она не ограничена какими-либо конкретными пакетами. Все, что связано с файлами pyd, не работает.

Поиск в Google предлагает переустановить Python «для всех пользователей», но программа установки больше не предоставляет вам такой возможности. На всякий случай я попытался переустановить Python 2.7 как администратор, а также сказал ему зарегистрироваться как версия Python по умолчанию, но ни то, ни другое не помогло.

Я думаю, что решение может иметь какое-то отношение к:

  1. Тот факт, что у меня на этой машине установлены версии 2.5, 2.6 и 2.7, а mod_wsgi может загружать библиотеки DLL версии 2.5 вместо 2.7.
  2. Что-то связанное с WSGIPythonPath, которое мне обычно не нужно устанавливать.

Я столкнулся с похожими проблемами, которые в конечном итоге оказались связаны с http://bugs.python.org/issue7833 а также выпуск 4120 (новый стиль DLL ад).

Использование Python 2.5 (версия до появления этих ошибок) решило эту проблему для меня. YMMV.

Решение, которое сработало для меня и позволило мне использовать Python 2.7 (хотя и не очень желательно), - это создать модуль Crypto с MingGW. Загрузите пакет с исходным кодом Crypto и запустите setup.py build --compiler=mingw32.

См. Этот вопрос для получения дополнительной информации: https://stackoverflow.com/questions/3706293