apache apontando para a versão errada do python no ubuntu como eu mudo?

2

Estou configurando uma aplicação de flask e uma instância do Ubuntu 12.04.3 LTS EC2 e tudo parecia estar funcionando bem (ou seja, eu poderia acessar a página via url publicamente disponível) até tentar importar um módulo (por exemplo, numpy ) e percebi que o python do apache difere daquele que usei para compilar o mod_wsgi e também o que estou usando

Estou executando o apache2.

Os logs do apache2 mostram os avisos (especificamente a última linha mostra que o caminho não foi alterado):

[warn] mod_wsgi: Compiled for Python/2.7.5.
[warn] mod_wsgi: Runtime using Python/2.7.3.
[warn] mod_wsgi: Python module path '/usr/lib/python2.7/:/usr/lib/python2.7/plat-linux2:/usr/lib/python2.7/lib-tk:/usr/lib$

Eu tentei definir o caminho no meu host virtual conf (meu python está localizado em / home / ubuntu / anaconda / bin junto com todas as outras bibliotecas):

WSGIPythonHome /home/ubuntu/anaconda
WSGIPythonPath /home/ubuntu/anaconda

<VirtualHost *:80>
                ServerName xx-xx-xxx-xxx-xxx.compute-1.amazonaws.com
                ServerAdmin [email protected]
                WSGIScriptAlias / /var/www/microblog/microblog.wsgi
                <Directory /var/www/microblog/app/>
                        Order allow,deny
                        Allow from all
                </Directory>
                Alias /static /var/www/microblog/app/static
                <Directory /var/www/FlaskApp/FlaskApp/static/>
                        Order allow,deny
                        Allow from all
                </Directory>
                ErrorLog ${APACHE_LOG_DIR}/error.log
                LogLevel warn
                CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

Mas ainda recebo os avisos e o caminho do python do apache não mudou - onde preciso colocar as diretivas relevantes para apontar o apache na minha versão e módulos do python (por exemplo, scipy, numpy etc)?

Separadamente, eu poderia ter evitado isso usando ambientes virtuais?

Obrigado antecipadamente.

EDIT # 1:

Eu corri:

>>> import sys
>>> print sys.prefix

Para obter:

/home/ubuntu/anaconda

E executando ldd mod_wsgi.so com set / unset LD_LIBRARY_PATH fornece o mesmo symlink

libpython2.7.so.1.0 => /usr/lib/libpython2.7.so.1.0 (0x00007f13ca1c1000)

Qual é a versão do sistema do python NÃO o que eu quero e não o que eu compilei mod_wsgi quando eu corri:

./configure --with-python=/home/ubuntu/anaconda/bin/python2.7
    
por one 04.11.2013 / 00:54

1 resposta

1

A diferença na revisão do nível de patch geralmente não importa e é explicada em:

Mais importante é o valor de sys.prefix quando os scripts são executados em mod_wsgi.

E qual biblioteca compartilhada do Python o arquivo mod_wsgi.so está realmente usando e se você compilou corretamente para garantir que ele irá pegar a biblioteca compartilhada alternativa.

Se realmente não estiver pegando a biblioteca compartilhada correta, a incompatibilidade pode ser um problema e você precisa recompilar o mod_wsgi.

Leia a documentação e execute as verificações em sua instalação explicadas lá e execute a ação descrita lá conforme necessário.

    
por 04.11.2013 / 02:48