Windows + Django + mod_wsgi = “Falha no carregamento da DLL”

1

Por muito tempo eu estava usando o Python 2.5 para fazer tudo isso bem, mas recentemente atualizei para 2.7, já que construir coisas para 2.5 é uma verdadeira dor. Eu também atualizei mod_wsgi para 3.3 para o Python 2.7.

Tudo está funcionando bem com o Apache + mod_wsgi no CentOS e também no servidor de execução do Django no Windows e no CentOS, mas não no Apache + mod_wsgi no Windows.

Sempre que tento acessar uma página no meu aplicativo Django, recebo o seguinte (note que o Apache começa bem):

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

O que é causado por coisas como:

from Crypto.Cipher import AES

Etree e outros causam exatamente o mesmo erro e não estão limitados a pacotes específicos. Qualquer coisa com arquivos pyd falha.

Ir ao redor sugere a reinstalação do Python "para todos os usuários", mas o instalador não oferece mais essa opção. Por uma boa medida eu tentei reinstalar o Python 2.7 como administrador e também disse para ele se registrar como a versão padrão do Python, mas não ajudou.

Acho que a solução pode ter algo a ver com:

  1. O fato de eu ter 2.5, 2.6 e 2.7 instalado nesta máquina e mod_wsgi pode estar carregando as DLLs para 2.5 em vez de 2.7.
  2. Algo a fazer com o WSGIPythonPath, que normalmente não preciso definir.
por Kyle MacFarlane 13.09.2010 / 16:21

2 respostas

1

Uma solução que funcionou para mim e me permitiu usar o Python 2.7 (embora não seja muito desejável) é construir o módulo Crypto com o MingGW. Faça o download do pacote de origem do Crypto e execute setup.py build --compiler=mingw32 .

Veja esta pergunta para obter mais informações: link

    
por 05.01.2011 / 11:19
2

Eu me deparei com problemas semelhantes, que eventualmente pareciam estar relacionados ao link e também a edição 4120 (novo estilo de inferno da DLL) .

Usando o Python 2.5 (a versão antes desses bugs serem iniciados) resolvi isso para mim. YMMV.

    
por 23.11.2010 / 15:06