ImportError: no hay un módulo llamado bz2 para Python 2.7.2

Estoy usando Python 2.7.2 en Ubuntu 11.10. Recibí este error al importar el módulo bz2:

ImportError: No module named bz2

Pensé que el módulo bz2 se supone que viene con Python 2.7. ¿Como puedo solucionar este problema?

EDITAR: Creo que previamente instalé Python 2.7.2 comstackndo desde la fuente. Probablemente en ese momento no tenía libbz2-dev y, por lo tanto, el módulo bz2 no está instalado. Ahora, espero instalar Python2.7 a través de

 sudo apt-get install python2.7 

Pero dirá que ya está instalado. ¿Hay alguna manera de desinstalar la instalación previa de Python2.7 y reinstalarla?

Bien, esto es mucho más fácil de entender en forma de respuesta, así que moveré lo que escribiría en mi comentario a esta respuesta.

Por suerte para usted, no sobrescribió la versión del sistema de Python, ya que Ubuntu 11.10 viene con 2.7.2 preinstalado.

Los binarios de python ( python y python2.7 ) se encuentran en /usr/local/bin , que es un directorio donde normalmente se instalan las cosas específicas del usuario. Esto está bien, significa que tu sistema python todavía está allí.

Primero, solo intenta ejecutar el sistema python. Escribe esto desde la línea de comando:

 /usr/bin/python -c "import bz2; print bz2.__doc__" 

Esto debería imprimir algo como esto:

 λ > /usr/bin/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. 

Si es así, significa que estás bien.

Así que solo tienes que arreglar tu PATH , que le indica al shell dónde encontrar los comandos. /usr/local/bin tendrá prioridad sobre /usr/local , por lo que hay algunas maneras de solucionar esto, en orden de dificultad / molestia / alteración de su sistema:

Elimine el enlace simbólico python de /usr/local/bin

Esto hará que, al escribir python , vuelva a ejecutar /usr/bin/python , que es un alias para el python 2.7.2 del sistema.

 sudo rm /usr/local/bin/python 

Mueva /usr/bin para tener mayor prioridad en el PATH

Podría no ser deseable si ya tiene cosas en /usr/local/bin que deberían tener prioridad sobre /usr/bin , pero estoy agregando esto para completar.

En tu perfil de shell (no estoy seguro de cuál es el valor predeterminado de Ubuntu, pero estoy usando ~/.bash_profile , puedes hacer esto:

 export PATH=/usr/bin:$PATH 

Quita tu instalación de python

Esto es extremo y la primera opción que presenté debería ser tu primera opción.

¿Realmente necesitas tu propia versión de Python? Si quieres entornos de Python aislados, probablemente quieras virtualenv . Probablemente puedas quitar el tuyo a menos que haya una razón para no hacerlo.

Sin embargo, va a ser un poco molesto, pero básicamente:

  • Elimine los python2.7 python y python2.7 y pythonw y pythonw2.7 de /usr/local/bin .
  • Eliminar /usr/local/lib/python/2.7.2

Esta parte no está completa porque olvido qué más hay.

Me encuentro con el mismo problema, aquí está mi solución.

El motivo del error de importación es que mientras está comstackndo Python, el sistema no pudo encontrar los encabezados bz2 y se omitió el módulo bz2 de comstackción.

Instálalos en Ubuntu / Debian:

 sudo apt-get install libbz2-dev 

Fedora:

 sudo yum install bzip2-devel 

y luego reconstruir Python

viene de otra respuesta

La respuesta de @Birryree ayuda a volver a la python original del sistema.

En caso de que debas usar python2.7, debes ejecutar: (Centos 6.4)

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

Tal vez ayude a alguien:

 apt-get install libbz2-dev # for bz2 apt-get install libssl-dev # for _ssl apt-get install libsqlite3-dev # for sqlite apt-get install libreadline6-dev # for readline, _curses, _curses_panel 

Para Ubuntu / Debian:

 sudo apt-get install libbz2-dev 

Para Fedora:

 sudo yum install bzip2-devel 

Y luego recompile el python e instálelo.

La respuesta de matocnhoi me funciona en centOS.

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

y usé virtualenv, entonces el comando es

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

Usé un enlace simbólico entre /usr/lib64/python2.6/lib-dynload/bz2.so /usr/local/lib/python2.7/lib-dynload/

Funcionó bien para mí …

Asegúrese de que tiene instalado bz2, ejecute sudo yum install bzip2-devel .

  • 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 generalmente es /usr/local/lib/python2.7/ , necesita reemplazarlo si instala python en otra ruta.

Si su bz2 en /usr/lib64/python2.7/lib-dynload/ se nombra como: “bz2.x86_64-linux-gnu.so”, recuerde cambiar el nombre a bz2.so cuando lo copie a su ruta o puede no ser correctamente de origen

 cp /usr/lib64/python2.6/lib-dynload/bz2.x86_64-linux-gnu.so /python_install_path/lib/python2.7/bz2.so 

Tuve el mismo problema con Python 2.17.15 y pyenv en Ubuntu. El sistema python de / usr / bin / python funcionó bien. En mi caso, ayudó a instalar libbz2-dev y luego a reinstalar python 2.7.15:

 sudo apt-get install libbz2-dev pyenv uninstall 2.7.15 pyenv install 2.7.15