Por que o httpd parece usar uma versão diferente do python com o mesmo executável?

1

Estou executando o Apache httpd 2.4.4 em uma máquina RedHat 5. Eu estou usando o Django e rodando através do mod_wsgi. Eu tenho o Python 2.4.3 instalado em / usr / bin e o Python 2.7.6 instalado em / usr / local / bin e quero usar o 2.7.6. Eu construo o 2.7.6 a partir do código-fonte e também construí o mod_wsgi-3.4.

Eu criei um virtualenv usando 2.7.6 e de um shell de comando, python -V me diz que está usando o 2.7.6 (depois de fazer um . virtpy/bin/activate ). A execução de import sys; sys.version também mostra 2.7.6 e sys.executable mostra-me /www/sqla/virtpy/bin/python .

Quando eu o executo a partir do httpd, eu recebo problemas ao carregar bibliotecas e quando olho para sys.version , vejo 2.7.3 . O mais estranho é que sys.executable ainda me mostra /www/sqla/virtpy/bin/python , exatamente o mesmo que eu vejo no shell de comando .

Especificamente, quando o python tenta carregar _socket, vejo esse erro no httpd:

ImportError: /www/sqla/virtpy/lib/python2.7/lib-dynload/_socket.so: undefined symbol: _PyInt_AsInt

Se eu tentar importar _socket de um shell de comando, não há problema. Eu tenho . /www/sqla/virtpy/bin/activate no meu / etc / sysconfig / httpd e reiniciei o Apache com essa mudança.

Como o mesmo executável pode fornecer versões diferentes do python? Como posso convencê-lo a usar o caminho certo?

    
por Graeme Perrow 06.02.2014 / 17:23

1 resposta

3

Use as verificações documentadas na documentação do mod_wsgi para validar como o seu mod_wsgi foi compilado está correto:

Certifique-se de que, ao fazer isso, verifique se LD_LIBRARY_PATH não está configurado. Forneça a saída do ldd.

Indique também se você também possui alguma instalação do Python 2.7 em / usr além da que está em / usr / local e especificamente se existe uma biblioteca compartilhada do Python 2.7 sob / usr / lib em qualquer lugar.

Se você usou a diretiva WSGIPythonHome na configuração do Apache, diga o que você definiu.

    
por 06.02.2014 / 22:17