web-dev-qa-db-fra.com

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écessite la version python 2.7.x, et je reçois 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
29
Satish

Probablement lorsque 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

Feutre:

Sudo yum install bzip2-devel 

Et construisez à nouveau python. Vous remarquerez peut-être que python vérifie de nombreuses 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 de pré-construction pour éviter ce genre de choses. Ubuntu 12.04 packs python 2.7. , la version dont votre script a besoin.

62
jviotti

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

Il existe une solution de contournement pour les 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 est généralement /usr/local/lib/python2.7/, vous devrez le remplacer si vous avez un chemin python personnalisé.

8
Mithril

Sur CentOS 7, installez bzip2-devel:

Sudo yum install  bzip2-devel

Recompilez ensuite python.

5
James Tang

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

3
AFoglia

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 de /usr/local/Python-3.5.2/lib/python3.5/lib-dynload/_bz2.cpython-35m-x86_64-linux-gnu.so, il doit y avoir un problème lorsque je compile bzip2 par code source. Je copie ce fichier à partir d'un autre VM pour résoudre le problème.

2
lvxiaobo616

Je dois également ajouter que sur CentOS 6, assurez-vous que vous avez bzip2-devel, ne pas bzip2-libs installée.

2
trinth

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

voici ma solution:

  1. yum installe bzip2-devel. (ou apt-get)
  2. téléchargez bzip2-1.0.6. make && make install ()
  3. construire le _bz2.cpython de Python3 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 que votre version précédente, cela ne désinstallera aucun paquet que vous aurez installé. Et avant cela, créez un dossier de sauvegarde.

1
Jingjia Luo

voici ma solution, l'étape 2-6 peut sauter:

  1. Sudo yum install bzip2-devel

  2. téléchargez bzip2-1.0.6.tar.gz depuis https://github.com/nemequ/bzip2/releases

  3. tar -zxvf bzip2-1.0.6.tar.gz
  4. cd bzip2-1.0.6
  5. make && make install
  6. télécharger le fichier depuis https://github.com/Imaginashion/ccdev-vision/blob/master/.fr-d0BNfn/Django-jquery-file-upload/venv/lib/python3.5/lib-dynload/ _bz2.cpython-35m-x86_64-linux-gnu.so et déplacez-le dans/[votre python] /lib-dynload/_bz2.cpython-35m-x86_64-linux- gnu.so
  7. Sudo ln -s find /usr/lib64/ -type f -name "libbz2.so.1*" /usr/lib64/libbz2.so.1.0 crédit à https://michaelheap.com/error- while-loading-shared-libraries-libbz2-so-1-0-cannot-open-shared- fichier-objet-sur-centos-7
0
chi doujiao