module Python BZ2 manquant

J'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écessitait Python 2.7.X version, et je reçois l'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 bz2 module, mais j'ai eu beaucoup d'erreur

 [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
25
demandé sur Satish 2012-10-09 22:26:07

7 réponses

Probablement que vous avez construit python à partir de la source, 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 construire à nouveau python. Vous remarquerez peut-être que python vérifie beaucoup de bibliothèques lors de la configuration/construction, si vous en manquez certaines, vous n'obtiendrez probablement aucun support pour les bibliothèques comme bz2 sur votre cas.

Vous devriez obtenir des binaires prédéfinis pour éviter ce genre de choses. Ubuntu 12.04 packs Python 2.7.3, la version de votre script besoins.

54
répondu jviotti 2017-02-07 20:28:20

Si vous installez python sur un emplacement spécifique, installez simplement libbz2-dev ne fonctionnera pas.

Il existe une solution de contournement pour 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 habituellement est /usr/local/lib/python2.7/, vous auriez besoin de le remplacer si vous avez un chemin Python personnalisé.

8
répondu Mithril 2016-11-22 05:46:47

Sur CentOS 7, installez bzip2-devel:

sudo yum install  bzip2-devel

Puis recompilez python.

4
répondu James Tang 2015-04-05 07:36:45

Vous devez avoir la version de développement de la bibliothèque C BZ2 installée. Vous ne le faites probablement pas et c'est pourquoi il n'a pas été installé lorsque vous avez construit votre copie utilisateur de python. Sur Ubuntu, c'est le paquet libbz2-dev. Il est probablement nommé le même ou similaire sur Fedora. Ou vous pouvez le télécharger à partir de www.bzip.org.

3
répondu AFoglia 2012-10-09 18:39:42

Vous devez réinstaller bzip2 par 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.

Enfin, j'ai compris le problème, il a besoin du/usr/local/Python-3.5.2 / lib / python3. 5 / lib-dynload/_bz2. cpython-35m-x86_64-linux-gnu. donc , Il doit avoir un problème quand je compile bzip2 par code source. Je copie ce fichier d'une autre machine virtuelle pour résoudre le problème.

3
répondu lvxiaobo616 2017-07-10 13:45:34

Je dois également ajouter que sur CentOS 6, assurez-vous d'avoir bzip2-devel, pas bzip2-libs installé.

2
répondu trinth 2017-10-25 23:35:38

La solution ci-dessus peut résoudre les problèmes bz2 avec python2.7. mais pas python 3.x oui, vous avez besoin _bz2.cpython-3xm-x86_64-linux-gnu.so, cependant, vous devriez le construire dans votre propre env.

Voici ma solution:

  1. yum installer bzip2-devel. (ou apt-get)
  2. télécharger bzip2-1.0.6. make && make install ()
  3. construisez _bz2 de Python3.disponible comme ceci:

Vim run.sh sous le dossier de code source de python3: Python-3.x.x

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

Vous pouvez définir le même préfixe de votre version antérieure, cela ne supprimera Aucun paquet que vous avez installé. Et avant cela, créez un dossier de sauvegarde.

1
répondu Jingjia Luo 2017-12-18 11:32:25