Como executo míltiplos pitons com virtualenv em produção?

0

Instalei o virtualenv para executar uma versão diferente do Python do que o sistema Python para o meu aplicativo django. Eu instalei o Python 2.7.11 usando o método descrito aqui . Eu modifiquei meu arquivo uwsgi.ini para utilizar o virtualenv. Quando eu reinicio o nginx e o uwsgi, recebo o seguinte erro no meu log do uwsgi:

ImportError: /home/me/python2711/lib/python2.7/lib-dynload/_io.so: undefined symbol: PyUnicodeUCS2_Replace
unable to load app 0 (mountpoint='') (callable not found or import error)

Da outra leitura que fiz (consulte aqui por exemplo), parece que a questão está relacionada a ter duas versões diferentes de python conflitantes entre si, o que eu achava que o virtualenv deveria resolver.

A minha pergunta é, o que eu preciso alterar nas minhas configurações / instalações para que meu aplicativo django funcione no Python 2.7.11 instalado em vez da instalação do sistema do 2.7.3?

EDITAR

Para falar com o comentário do @BrownOne abaixo, eu instalei a versão mais recente da fonte localmente em /usr/local/lib/python2.7.11 e especifiquei isso como a versão Python para o meu virtualenv com

virtualenv python2711 --python=/usr/local/lib/python2.7.11/bin/python

como parte do meu roteiro original. Ainda leva a esse erro.

    
por Tyrel Denison 06.06.2016 / 20:00

1 resposta

4

virtualenv é para gerenciar dependências de pacotes do Python, não a versão do próprio Python. Se você quiser ter versões específicas do próprio Python, provavelmente seria benéfico procurar, em vez disso, em contêineres do Docker. Contêineres Docker são capazes do que você está descrevendo.

Alternativamente você pode instalar a versão 2.7.11 do Python em algum lugar local:

wget https://www.python.org/ftp/python/2.7.11/Python-2.7.11.tgz
tar -zxvf Python-2.7.11.tgz
cd Python-2.7.11
mkdir ~/.localpy
./configure prefix=/home/$USER/.localpy
make
make install

Em seguida, modifique seu virtualenv para incluir -p /home/$USER/.localpy/bin/python2.7

    
por user323419 06.06.2016 / 20:09