36 votes

ImportError : Aucun module nommé bz2 pour Python 2.7.2

J'utilise Python 2.7.2 sur Ubuntu 11.10. J'ai obtenu cette erreur lors de l'importation du module bz2 :

ImportError: No module named bz2

Je pensais que le module bz2 était censé être fourni avec Python 2.7. Comment puis-je résoudre ce problème ?

EDIT : Je pense que j'ai précédemment installé Python 2.7.2 en compilant à partir des sources. Probablement qu'à ce moment-là je n'avais pas libbz2-dev et donc le module bz2 n'est pas installé. Maintenant, j'espère pouvoir installer Python2.7 par le biais de

sudo apt-get install python2.7

Mais il est dit que c'est déjà installé. Existe-t-il un moyen de désinstaller l'installation précédente de Python2.7 et de la réinstaller ?

47voto

arbel Points 261

Je rencontre le même problème, voici ma solution.

La raison de l'erreur d'importation est que lors de la construction de python, le système n'a pas pu trouver les en-têtes bz2 et a ignoré la construction du module bz2.

Installez-les sur Ubuntu/Debian :

sudo apt-get install libbz2-dev

Fedora :

sudo yum install bzip2-devel

et ensuite reconstruire python

vient de une autre réponse

La réponse de @birryree permet de revenir au python original du système.

25voto

birryree Points 29165

Ok, c'est beaucoup plus facile à comprendre sous forme de réponse, donc je vais déplacer ce que j'aurais écrit dans mon commentaire vers cette réponse.

Heureusement pour vous, vous n'avez pas écrasé la version système de python, car Ubuntu 11.10 est livré avec la version 2.7.2 préinstallée.

Vos binaires python ( python et python2.7 ) sont situés dans /usr/local/bin qui est un répertoire où sont généralement installés les éléments spécifiques à l'utilisateur. C'est bien, cela signifie que votre système python est toujours là.

Tout d'abord, essayez d'exécuter le système python. Tapez ceci sur la ligne de commande :

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

Cela devrait donner quelque chose comme ceci :

λ > /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 c'est le cas, ça veut dire que tu es bien.

Donc vous devez juste réparer votre PATH qui indique au shell où trouver les commandes. /usr/local/bin va avoir la priorité sur /usr/local Il existe donc plusieurs façons de résoudre ce problème, par ordre de difficulté, d'ennui ou de modification de votre système :

Supprimer le lien symbolique python de /usr/local/bin

Cela fera en sorte que lorsque vous tapez python il devrait revenir à l'exécution /usr/bin/python qui est un alias pour la version 2.7.2 de python du système.

sudo rm /usr/local/bin/python

Déplacements /usr/bin pour avoir une plus grande priorité dans le PATH

Ce n'est peut-être pas souhaitable si vous avez déjà des choses à faire. /usr/local/bin qui devrait avoir la priorité sur /usr/bin mais je l'ajoute par souci d'exhaustivité.

Dans votre profil shell (je ne sais pas quel est le profil par défaut d'Ubuntu, mais j'utilise ~/.bash_profile vous pouvez le faire :

export PATH=/usr/bin:$PATH

Supprimez votre installation de python

C'est extrême et la première option que j'ai présentée devrait être votre première option.

Avez-vous vraiment besoin de votre propre version de Python ? Si vous voulez des environnements python isolés, vous avez probablement besoin de virtualenv . Vous pouvez probablement retirer le vôtre, sauf s'il y a une raison de ne pas le faire.

Ça va être un peu ennuyeux, mais en gros :

  • Retirer le python et python2.7 et pythonw et pythonw2.7 des commandes de /usr/local/bin .
  • Retirer /usr/local/lib/python/2.7.2

Cette partie n'est pas complète car j'ai oublié ce qu'il y a d'autre.

24voto

matocnhoi Points 81

Dans le cas où vous devez utiliser python2.7, vous devez exécuter : (Centos 6.4)

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

7voto

Oleg Neumyvakin Points 1558

Peut-être que ça aidera quelqu'un :

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

4voto

yfliu Points 21

Pour Ubuntu/Debian :

sudo apt-get install libbz2-dev

Pour Fedora :

sudo yum install bzip2-devel

Et ensuite recompiler le python et l'installer.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X