De vez en cuando necesito instalar un nuevo Ubuntu (lo usé tanto para escritorio como para servidores) y siempre olvido un par de bibliotecas que debería haber instalado antes de compilar, lo que significa que tengo que volver a compilar, y se está volviendo molesto.
Así que ahora quiero hacer una lista completa de todos los paquetes de la biblioteca para instalar antes de compilar Python (y preferiblemente qué tan opcionales son).
Esta es la lista que compilé con la siguiente ayuda y profundizando setup.py
. Está completo para Ubuntu 10.04 y 11.04 al menos:
build-essential (obviously)
libz-dev (also pretty common and essential)
libreadline-dev (or the Python prompt is crap)
libncursesw5-dev
libssl-dev
libgdbm-dev
libsqlite3-dev
libbz2-dev
Para Python 3.2 y posterior:
liblzma-dev
Más opcional:
tk-dev
libdb-dev
Ubuntu no tiene paquetes para v1.8.5 de la base de datos Berkeley, ni (por razones obvias) el hardware de audio Sol, por lo que el bsddb185
y sunaudiodev
módulos todavía no será construido en Ubuntu, pero todos los demás módulos están construidos con los paquetes anteriores instaladas.
ACTUALIZAR
Hay en Ubuntu 14.04 incluso más parches necesarios para Python 2.6 y 2.7, etc. Recomendaría en cambio retirar pyenv . Contiene un script python-build
(ubicado en plugins/python-build/bin
). Con él puedes instalar versiones arbitrarias de Python como esta:
$ ./python-build 2.7.8 /opt/python27
Donde 2.7.8 es la versión y / opt / python27 es la ruta en la que se instalará. Pyenv descargará la versión de Python, aplicará los parches necesarios y configure; make; make install
para usted.
ACTUALIZACIÓN FINAL
Python 2.5 y Python 2.6 también necesitan tener LDFLAGS configurado en Ubuntu 11.04 y posterior, para manejar el nuevo diseño de múltiples arcos:
export LDFLAGS="-L/usr/lib/$(dpkg-architecture -qDEB_HOST_MULTIARCH)"
Para Python 2.6, 2.7 y 3.0, también debe habilitar explícitamente SSL después de ejecutar el ./configure
script y antes de ejecutarlo make
. En Modules/Setup
hay líneas como esta:
#SSL=/usr/local/ssl
#_ssl _ssl.c \
# -DUSE_SSL -I$(SSL)/include -I$(SSL)/include/openssl \
# -L$(SSL)/lib -lssl -lcrypto
Descomente estas líneas y cambie la variable SSL a /usr
:
SSL=/usr
_ssl _ssl.c \
-DUSE_SSL -I$(SSL)/include -I$(SSL)/include/openssl \
-L$(SSL)/lib -lssl -lcrypto
Python 2.6 y 3.0 también necesita módulos modificados / _ssl.c para usarse con OpenSSL 1.0, que se usa en Ubuntu 11.10. Alrededor de la línea 300 encontrarás esto:
else if (proto_version == PY_SSL_VERSION_SSL3)
self->ctx = SSL_CTX_new(SSLv3_method()); /* Set up context */
else if (proto_version == PY_SSL_VERSION_SSL2)
self->ctx = SSL_CTX_new(SSLv2_method()); /* Set up context */
else if (proto_version == PY_SSL_VERSION_SSL23)
self->ctx = SSL_CTX_new(SSLv23_method()); /* Set up context */
Cambia eso a:
else if (proto_version == PY_SSL_VERSION_SSL3)
self->ctx = SSL_CTX_new(SSLv3_method()); /* Set up context */
#ifndef OPENSSL_NO_SSL2
else if (proto_version == PY_SSL_VERSION_SSL2)
self->ctx = SSL_CTX_new(SSLv2_method()); /* Set up context */
#endif
else if (proto_version == PY_SSL_VERSION_SSL23)
self->ctx = SSL_CTX_new(SSLv23_method()); /* Set up context */
Esto deshabilita el soporte SSL_v2, que aparentemente desapareció en OpenSSL1.0.
Python 2.4 (sí, todavía tengo algunos proyectos antiguos que necesitan 2.4) necesita este parche para setup.py:
--- setup.py 2006-10-08 19:41:25.000000000 +0200
+++ setup.py 2012-05-08 14:02:14.325174357 +0200
@@ -269,6 +269,7 @@
lib_dirs = self.compiler.library_dirs + [
'/lib64', '/usr/lib64',
'/lib', '/usr/lib',
+ '/usr/lib/x86_64-linux-gnu'
]
inc_dirs = self.compiler.include_dirs + ['/usr/include']
exts = []
@@ -496,7 +497,8 @@
ssl_incs += krb5_h
ssl_libs = find_library_file(self.compiler, 'ssl',lib_dirs,
['/usr/local/ssl/lib',
- '/usr/contrib/ssl/lib/'
+ '/usr/contrib/ssl/lib/',
+ 'x86_64-linux-gnu'
] )
if (ssl_incs is not None and
Y necesita ser compilado con:
env CPPFLAGS="-I/usr/lib/x86_64-linux-gnu" LDFLAGS="-L/usr/include/x86_64-linux-gnu" ./configure --prefix=/opt/python2.4
fuente
libreadline5-dev
alibreadline-dev
libreadline5-dev
porlibreadline-gplv2-dev
Debería poder instalar todas las dependencias de compilación para Python con la
build-dep
opción en apt-getsudo apt-get build-dep python
fuente
apt-get source python
.sudo apt-get build-dep python3.x
(reemplace 3 yx con su versión preferida según sea necesario, aunque a veces como en mi caso 3.6 todavía no estaba disponible, utilicé 3.5 en su lugar)si quieres usar el SDK de Google App Engine:
libsqlite3-dev zlib1g zlib1g-dev
PIL 1.1.7
:)
fuente
Para ejecutar ciertos tipos de pruebas necesitará
python-profiler
fuente