¿Cómo asignas bz2 a un altinstall de python?

Estoy usando redhat 5.8, que viene con python 2.4 instalado automáticamente, pero estoy usando un paquete de python que requiere python 2.6 o superior. SO, instalé Python 2.7 junto con 2.4, para no pisar la versión del sistema.

Ahora, estoy intentando instalar un paquete a través de pip y obtengo el siguiente error:

CompressionError: bz2 module is not available 

Sin embargo, tengo el módulo en mi máquina, como se evidencia cuando hago esto que da la versión del servidor:

 [~]$ python -c "import bz2; print bz2.__doc__" The python bz2 module provides a comprehensive interface for the bz2 compression library. It implements a complete file interface, one shot (de)compression functions, and types for sequential (de)compression. 

y los 2.7 instalan errores de esta manera:

 [~]$ python2.7 -c "import bz2; print bz2.__doc__" Traceback (most recent call last): File "", line 1, in  ImportError: No module named bz2 

Por lo tanto, he leído estas preguntas: Ya está instalado y es muy bueno , pero ninguno de estos parece estar en la marca. En el primer caso, el consejo es instalar la pieza faltante y la segunda pregunta es eliminar (o dejar de hacer referencia a) la instalación extra de python.

Lo que quiero hacer es colocar un enlace simbólico o algo así para que la instalación de python 2.7 sepa dónde está bz2 para que pueda usar pip para instalar un paquete de python.

Gracias b


EDITAR: más información

Entonces, después de mucha investigación, parece que la forma en que se establecieron las variables de ruta cambió drásticamente en Python 2.5 (probablemente la razón por la que Red Hat no se haya actualizado).

Entonces, en Python 2.7 puedes agregar a la variable PYTHONPATH agregando un archivo con la extensión .pth en esta carpeta:

 /usr/local/lib/python2.7/site-packages/ 

He intentado 2 maneras de hacer que esto funcione correctamente.

Primero, simplemente introduje un número de los archivos de ruta de python 2.4 a 2.7. Esto causó un error de un tipo diferente:

 [~]$ python2.7 -c "import bz2; print bz2.__doc__" Traceback (most recent call last): File "", line 1, in  ImportError: /usr/lib64/python2.4/lib-dynload/bz2.so: undefined symbol: Py_InitModule4 

Entonces, eso es algo.

También intenté señalar la ruta al archivo libbz2.so en / usr / lib / que resultó en un error familiar:

 [~]$ python2.7 -c "import bz2; print bz2.__doc__" Traceback (most recent call last): File "", line 1, in  ImportError: No module named bz2 

Todavía estoy perplejo, pero siento que me estoy acercando.

Realmente podría utilizar algunos comentarios de alguien con más experiencia en la configuración de entornos de progtwigción. Estoy mucho más cómodo escribiendo código 🙂

Simplemente hice esto ayer en la misma plataforma y lo hice funcionar. Esto es lo que hice:

Establezca CFLAGS="-I/path/to/bz2/include" y LDFLAGS="-L/path/to/bz2/lib" . Asegúrese de que la ruta de la biblioteca bz2 esté establecida en su LD_LIBRARY_PATH . Sin embargo, es probable que necesites hacer una configure && make && make install y configure && make && make install .

Si eso falla, edite directamente el archivo setup.py y haga un reemplazo similar al siguiente:

 # Gustavo Niemeyer's bz2 module. if (self.compiler.find_library_file(['/home/someuser/packages/libbz2/lib'], 'bz2')): #lib_dirs, 'bz2')): 

Tenga en cuenta que la parte comentada al final de la segunda línea es el rest original de la línea setup.py.

Además, encontré que descargar y comstackr la última versión de bz2 y señalar todo lo anterior es más fácil que intentar que la versión del sistema instalada funcione.

En cualquier caso, esto definitivamente funciona. Lo hice ayer 🙂

Siempre que esté trabajando con un python que no sea el instalado por el sistema, le sugiero que utilice http://pypi.python.org/pypi/virtualenv . Establece una “caja de arena” para ti con su propia copia de python y rehace todos los caminos, etc. para apuntar a la nueva copia. Luego puedes usar pip para instalar cualquier paquete que necesites.

Las otras respuestas proporcionadas son útiles y útiles, pero así es como conseguí que esto funcionara.

El problema no era que Python no estuviera encontrando los archivos (como pensé), simplemente no podía usarlos correctamente. Entonces, vi en el Makefile para bzip2, encontré la línea que se veía así:

 CFLAGS= -Wall -Winline -O2 -g $(BIGFILES) 

y agregó -fPIC a la línea así:

 CFLAGS=-fPIC -Wall -Winline -O2 -g $(BIGFILES) 

y WHALA! Se compiló muy bien.