84 votes

module python bz2 manquant

Je l'ai installé dans mon répertoire personnel.

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

J'essaie d'exécuter un script qui nécessite la version 2.7.x de python, et j'obtiens une erreur bz2 manquante.

[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

J'ai essayé d'installer le module bz2 mais j'ai eu beaucoup d'erreurs.

 [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

136voto

jviotti Points 2261

Probablement parce que vous avez construit python à partir des sources, vous n'avez pas d'en-têtes bz2.

Installez-les sur Ubuntu/Debian :

sudo apt-get install libbz2-dev

Fedora :

sudo yum install bzip2-devel 

Et recompilez python. Vous pouvez remarquer que python vérifie la présence de nombreuses bibliothèques lors de la configuration/construction, si vous omettez certaines d'entre elles, vous n'obtiendrez probablement pas de support pour des bibliothèques comme bz2 dans votre cas.

Vous devriez obtenir des binaires pré-construits pour éviter ce genre de choses. Packs Ubuntu 12.04 python 2.7.3 la version dont votre script a besoin.

45voto

BryanMinorPhD Points 13

Cela s'est produit pour python 3.8.2 lors de l'importation de pandas : import pandas as pd

a donné lieu à un long message d'erreur se terminant par : "error : ModuleNotFoundError : No module named '_bz2'"

Ce problème a été résolu en exécutant les 2 commandes bash suivantes :

sudo apt-get install libbz2-dev
sudo cp /usr/lib/python3.8/lib-dynload/_bz2.cpython-38-x86_64-linux-gnu.so  /usr/local/lib/python3.8/

Ensuite, tout a bien fonctionné.

11voto

James Tang Points 145

Sur CentOS 7, installez bzip2-devel :

sudo yum install  bzip2-devel

Puis recompilez python.

5voto

julianromera Points 401

Dans mon cas, j'ai obtenu cette erreur lors de l'importation de pandas. L'installation de python 3.9.1 a résolu le problème.

Ma version initiale de Python était la 3.8.6. J'utilisais PyEnv et MacOS Big Sur.

Dans un premier temps :

$ python
Python 3.8.6 (default, Nov 21 2020, 02:39:42)
[Clang 12.0.0 (clang-1200.0.32.27)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import pandas as pd
Traceback (most recent call last):
...
    from _bz2 import BZ2Compressor, BZ2Decompressor
ModuleNotFoundError: No module named '_bz2'

Installation de python 3.9.1 :

$ pyenv install --list
$ pyenv install 3.9.1
$ pyenv local 3.9.1
$ pyenv global 3.9.1
$ pip install pandas

Recommencer à courir :

$  python
Python 3.9.1 (default, Jul  5 2021, 22:26:09)
[Clang 12.0.5 (clang-1205.0.22.11)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import pandas as pd
>>>

4voto

lvxiaobo616 Points 49

Vous devez réinstaller bzip2 par le code source :

  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. configurer et recompiler python

ces étapes fonctionnent parfois.

Finalement, j'ai compris le problème, il a besoin du répertoire /usr/local/Python-3.5.2/ lib/python3.5/lib-dynload/_bz2.cpython-35m-x86_64-linux-gnu.so , [ ]

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