Asumiendo que usted tiene todas las dependencias instaladas (en Ubuntu que sería montón de cosas como sudo apt-get install libdb4.8-dev
y varios otros paquetes -dev, entonces esta es la forma en que construyo . pitón
tar zxvf Python-2.7.1.tgz
cd Python-2.7.1
# 64 bit self-contained build in /opt
export TARG=/opt/python272
export CC="gcc -m64"
export LDFLAGS='-Wl,-rpath,\$${ORIGIN}/../lib -Wl,-rpath-link,\$${ORIGIN}/../lib -Wl,--enable-new-dtags'
./configure --prefix=$TARG --with-dbmliborder=bdb:gdbm --enable-shared --enable-ipv6
make
make install
Los únicos módulos que no se acumulan durante el maquillaje son:
_tkinter - I don't do GUI apps and would use wxWindows if I did
bsddb185 - horribly obsolete version of bdb
dl - deprecated in 2.6
imageop - deprecated in 2.6
sunaudiodev - obsolete interface to some SparcStation device I think
siguiente que recoger todos los archivos .so que no se encuentren en el pitón directorios de instalación y copiarlos:
# collect binary libraries ##REDO THIS IF YOU ADD ANY ADDITIONAL MODULES##
cd /opt/python272
find . -name '*.so' | sed 's/^/ldd -v /' >elffiles
echo "ldd -v bin/python" >>elffiles
chmod +x elffiles
./elffiles | sed 's/.*=> //;s/ .*//;/:$/d;s/^ *//' | sort -u | sed 's/.*/cp -L & lib/' >lddinfo
# mkdir lib
chmod +x lddinfo
./lddinfo
Y a continuación, añadir setuptools una buena medida
#set the path
export PATH=/opt/python272/bin:$PATH
#install setuptools
./setuptools-0.6c11-py2.7.egg
En este punto me puedo hacer un archivo tar de/opt/python272 y ejecutarlo en cualquier 64 -bit Linux distro, incluso una versión reducida que no tiene ninguna de las dependencias instaladas, o una versión anterior que tiene versiones antiguas obsoletas de las dependencias.
También tengo pip
instalado, pero en este momento hay una brecha en mis notas debido a algunas luchas fallidas con virtualenv. Básicamente virtualenv no es compatible con este escenario. Es de suponer que lo hice y luego easy_install pip
:
export LD_RUN_PATH=\$${ORIGIN}/../lib
pip install cython
pip install {a whole bunch of other libraries that I expect to use}
Después de que haya terminado la instalación de módulos, vuelvo y vuelva a ejecutar los comandos para recoger archivos .so, y hacer un nuevo archivo comprimido. Hubo un par de paquetes en los que tuve que rebuscar con LDFLAGS
para que se instalaran correctamente, y aún no he hecho suficientes pruebas exhaustivas, pero hasta ahora funciona y estoy usando esta versión de Python para ejecutar aplicaciones de producción en máquinas que no tienen todas las bibliotecas de soporte preinstaladas.
Intentaré ir a Synaptic y buscar en Python y descargar todos los kits de desarrollo, etc. – Scott
Creo que esto sería mejor para unix.se, ubuntu.se, superuser o serverfault. – Chris