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
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.
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é.
Sur CentOS 7, installez bzip2-devel:
Sudo yum install bzip2-devel
Recompilez ensuite python.
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.
Vous devez réinstaller bzip2
par code source:
yum install bzip2-devel
wget http://www.bzip.org/1.0.6/bzip2-1.0.6.tar.gz
tar -zxvf bzip2-1.0.6.tar.gz
cd bzip2-1.0.6
make && make install
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.
Je dois également ajouter que sur CentOS 6, assurez-vous que vous avez bzip2-devel
, ne pas bzip2-libs
installée.
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:
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.
voici ma solution, l'étape 2-6 peut sauter:
Sudo yum install bzip2-devel
téléchargez bzip2-1.0.6.tar.gz depuis https://github.com/nemequ/bzip2/releases
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