python linux bzip2

falta el módulo bz2 de python



linux bzip2 (7)

Debe reinstalar bzip2 por código fuente:

  1. yum install bzip2-devel

  2. wget http://www.bzip.org/1.0.6/bzip2-1.0.6.tar.gz

  3. tar -zxvf bzip2-1.0.6.tar.gz

  4. cd bzip2-1.0.6

  5. make && make install

  6. configurar y volver a compilar python

Esos pasos funcionan a veces.

Finalmente, he resuelto el problema, necesita el /usr/local/Python-3.5.2/ lib / python3.5 / lib-dynload / _bz2.cpython-35m-x86_64-linux-gnu.so , debe tener Un problema cuando compilo bzip2 por código fuente. Copio este archivo de otra máquina virtual para resolver el problema.

He instalado en mi directorio personal.

[spatel@~ dev1]$ /home/spatel/python-2.7.3/bin/python -V Python 2.7.3

Estoy intentando ejecutar un script que requería la versión de Python 2.7.x, y me está faltando el error bz2

[spatel@~ dev1]$ ./import_logs.py Traceback (most recent call last): File "./import_logs.py", line 13, in <module> import bz2 ImportError: No module named bz2

He intentado instalar el módulo bz2 pero tengo muchos errores

[spatel@dev1 python-bz2-1.1]$ /home/spatel/python-2.7.3/bin/python setup.py install ... ... ... bz2.c:1765: error: âBZ_FINISH_OKâ undeclared (first use in this function) bz2.c:1765: warning: comparison between pointer and integer bz2.c:1771: error: âPyMemberDefâ has no member named âavail_outâ bz2.c:1778: error: âPyMemberDefâ has no member named ânext_outâ bz2.c:1778: error: âPyMemberDefâ has no member named âtotal_out_hi32â bz2.c:1778: error: âPyMemberDefâ has no member named âtotal_out_lo32â bz2.c:1778: error: invalid operands to binary + bz2.c:1778: warning: statement with no effect bz2.c:1779: error: âPyMemberDefâ has no member named âavail_outâ bz2.c:1779: error: âPyMemberDefâ has no member named ânext_outâ bz2.c:1779: error: invalid operands to binary - bz2.c:1779: error: invalid operands to binary - bz2.c:1779: warning: statement with no effect bz2.c:1783: error: âPyMemberDefâ has no member named âavail_outâ bz2.c:1784: error: âPyMemberDefâ has no member named âtotal_out_hi32â bz2.c:1784: error: âPyMemberDefâ has no member named âtotal_out_lo32â bz2.c:1784: warning: passing argument 2 of â_PyString_Resizeâ makes integer from pointer without a cast error: command ''gcc'' failed with exit status 1


Debe tener instalada la versión de desarrollo de la biblioteca bz2 c. Probablemente no lo hagas y por eso no se instaló cuando creaste tu copia de python para el usuario. En Ubuntu es el paquete libbz2-dev. Probablemente se llama igual o similar en Fedora. O puede descargarlo de www.bzip.org.


En CentOS 7, instale bzip2-devel:

sudo yum install bzip2-devel

Luego vuelva a compilar Python.


La solución anterior puede resolver problemas bz2 con python2.7. pero no python 3.x sí, necesita _bz2.cpython-3xm-x86_64-linux-gnu.so, sin embargo, debe compilarlo en su propio env.

Aquí está mi solución:

  1. yum instalar bzip2-devel. (o apt-get)
  2. descargar bzip2-1.0.6. make && make install ()
  3. construir el _bz2.cpython de Python3 de esta manera:

vim run.sh bajo la carpeta de código fuente de python3: Python-3.xx

export CFLAGS="-I/usr/include" export LDFLAGS="-L/usr/lib64" export LD_LIBRARY_PATH=/usr/lib64 make distclean ./configure --prefix=/home/xxx/Python3 && make && make install

Puede configurar el prefijo de la versión anterior, que no desinstalará ningún paquete que haya instalado. Y antes de eso, hacer una carpeta de copia de seguridad.


Probablemente a medida que construyes python desde la fuente, no tienes encabezados bz2.

Instálalos en Ubuntu / Debian:

sudo apt-get install libbz2-dev

Fedora:

sudo yum install bzip2-devel

Y construir Python de nuevo. Puede notar que Python busca muchas bibliotecas cuando configura / construye, si pierde algunas de ellas, probablemente no obtendrá soporte para librerías como bz2 en su caso.

Debes obtener binarios previos al desarrollo para evitar este tipo de cosas. Ubuntu 12.04 incluye Python 2.7.3 , la versión que tu script necesita.


Si instala Python en una ubicación específica, simplemente instalar libbz2-dev no funcionaría.

Hay una solución para centos:

  • Centos 6

    sudo cp /usr/lib64/python2.6/lib-dynload/bz2.so /python_install_path/lib/python2.7

  • Centos 7

    sudo cp /usr/lib64/python2.7/lib-dynload/bz2.so /python_install_path/lib/python2.7

python_install_path normalmente es /usr/local/lib/python2.7/ , necesitaría reemplazarlo si tiene una ruta de python personalizada.


También debo agregar que en CentOS 6, asegúrate de tener bzip2-devel , no bzip2-libs instalado.