2011-05-06 8 views
15

Tengo una máquina Debian para mi servidor de producción Django. Necesito instalar el segundo python (2.7.1) para usar con virtualenv. Pero siempre escribe que no tengo algunos módulos, luego tengo que buscarlos manualmente, instalarlos y reconstruirlos. ¿Hay alguna manera de resolver las dependencias para compilar, o precompilado .deb con python 2.7.1 para Debian Squeeze? Disculpa si esta es una gran pregunta, busqué en Google, sinceramente.Instalación de la segunda python en Debian

Respuesta

21

obtener el código fuente de Python 2.7.1 y compilar manualmente:

configure --prefix=/path/to/python-2.7 
make; make install 
+0

También me gustaría sugerir la instalación de varias bibliotecas antes de compilar: http://stackoverflow.com/a/4047583/211197 Esto será útil si es necesario instalar setuptools/pip más tarde. – maksimov

+4

¿Por qué no 'make altinstall'? – timss

12

Python 2.7 is available for wheezy (testing), por lo que debe ser capaz de instalarlo añadiendo el repositorio testing y haciendo algunas APT pinning.

1) añadir el repositorio en /etc/apt/sources.list

deb http://ftp.us.debian.org/debian testing main contrib non-free 

2) hacer brochado real en /etc/apt/preferences

Package: * 
Pin: release n=testing 
Pin-Priority: 100 

Un Pin-Priority de menos de 500 básicamente significa que no se instalan paquetes de testing automáticamente, por lo que no tendrá problemas con otros paquetes.

3) instalar python2.7 de testing:

aptitude -t testing install python2.7 

(o apt-get si usted no tiene aptitude)

+12

Esto no se debe hacer por varias razones. Los paquetes de diferentes versiones de Debian no deben mezclarse. Las ramas de prueba/inestables están trabajando para cambiar la versión predeterminada de Python a 2.7 para la versión de Wheezy. Squeeze utiliza el 2.6, por lo que si lo reemplazas con el 2.7 corres el riesgo de romper todo en el sistema que usa Python. – Arrowmaster

+0

@Arrowmaster: Prefiero decir que esto no es compatible, que eso no debería hacerse. * Si se rompe, puedes conservar ambas piezas. * – dancek

+2

Correcto, pero es más fácil decirle a la gente que no sabría dónde comenzar a solucionarlo que simplemente no se debe hacer. – Arrowmaster

2

-Instalación de un entorno chroot con debootstrap podría ser también una forma rápida y segura solución. Se utiliza alrededor de 300 MB

debootstrap wheezy /opt/debian7 
chroot /opt/debian7 
apt-get install python2.7 
9

Aquí es dos métodos para Debian GNU/Linux 6.0.7 (el 18/07/2013):

El clásico

Instalar dependencias

aptitude -y install build-essential python-pip libmysqlclient-dev libadns1-dev \ 
python-dev libreadline-dev libgdbm-dev zlib1g-dev libsqlite3-dev \ 
libssl-dev libbz2-dev libncurses5-dev libdb-dev 

Descargar pitón

cd /tmp 
wget http://python.org/ftp/python/2.7.5/Python-2.7.5.tar.xz 
unxz -c Python*xz | tar xpf - 

Compilar

cd Python* 
./configure --prefix=/opt/python2.7.5 --enable-shared 
make 

Instalar

make install 
echo "/opt/python2.7.5/lib" > /etc/ld.so.conf.d/libpython2.7.conf 
ldconfig 

prueba

/opt/python2.7.5/bin/python -c "print('Ok')" 

pip actualización virtualenv

easy_install pip 
pip -v install --upgrade distribute==0.7.3 
pip -v install --upgrade virtualenv==1.9.1 

crear un usuario y su virtualenv

adduser user_app --home /opt/user_app 
su user_app 
virtualenv --no-site-packages --verbose -p /opt/python2.7.5/bin/python $HOME 

prueba de nuevo

su user_app 
cd 
source bin/activate 
python -c "import sys; print sys.version" 

El "Pythonic"

Uso del paquete pyenv.

pyenv install 2.7.5 
+0

Creo que omito agregar la instalación personalizada de Python al caché ld.so.conf. Mi enfoque sería crear un 'script de contenedor' (/usr/local/bin/python2.7) que: exportaría LD_LIBRARY_PATH = opt/python2.xx/lib y luego llamaría a /opt/python-2.xx/ bin/python "$ @" etc. Esto al menos mantiene todo aislado. –

Cuestiones relacionadas