--macOS Big Sur version 11.0.1 --Installez python avec pyenv
Quand j'ai par hasard essayé d'importer des pandas avec python,
import pandas as pd
J'ai eu l'erreur suivante:
Traceback (most recent call last):
...(Omission)
ImportError: No module named '_bz2'
Lorsque vous installez python avec pyenv, vous pouvez vous attendre à ce que la bibliothèque bz2 pour python ne soit pas installée et soit incomplète car le compilateur n'a pas reconnu le package bzip2.
Donc, quand je l'ai installé avec pyenv, j'aurais vu l'avertissement suivant.
$ pyenv install 3.9.0
...(Omission)
WARNING: The Python bz2 extension was not compiled. Missing the bzip2 lib?
Avec le compilateur conscient de la bibliothèque bzip2, utilisez pyenv pour réinstaller python.
$ brew install bzip2
Pendant l'installation, vous verrez probablement un message similaire au suivant: C'est très important.
For compilers to find bzip2 you may need to set:
export LDFLAGS="-L/usr/local/opt/bzip2/lib"
export CPPFLAGS="-I/usr/local/opt/bzip2/include"
Si vous l'installez simplement avec brew, le compilateur ne reconnaîtra pas le paquet bzip2 lors de la construction de python avec pyenv.
Pour que le compilateur le reconnaisse, vous devez définir LDFLAGS
et CPPFLAGS
comme dans le message qui est sorti plus tôt.
Pour ce faire, ajoutez l'instruction suivante dans votre .zprofile ou .bash_profile:
export LDFLAGS="-L/usr/local/opt/bzip2/lib"
export CPPFLAGS="-I/usr/local/opt/bzip2/include"
Si vous aviez précédemment défini différents LDFLAGS
et CPPFLAGS
, vous pouvez spécifier plusieurs de ces FLAG en les connectant avec un espace, vous pouvez donc également faire ce qui suit:
export LDFLAGS="$LDFLAGS -L/usr/local/opt/bzip2/lib"
export CPPFLAGS="$CPPFLAGS -I/usr/local/opt/bzip2/include"
Installez la version de votre choix avec pyenv.
$ pyenv install <version>
Peut-être que l'avertissement précédent a disparu.
Après cela, suivez la procédure d'installation habituelle de pyenv, spécifiez la version principale de python à utiliser et rechargez le shell.
$ pyenv global <La version que vous venez d'installer>
$ exec $SHELL -l
Vous devriez probablement pouvoir charger des pandas.
Les articles suivants seront utiles. Problème avec aucun module nommé'_bz2 'dans scikit-learn
J'ai trouvé de nombreuses façons de gérer la même erreur sous Linux, mais je n'ai pas trouvé de moyen de gérer l'erreur sous macOS, j'ai donc dû la résoudre moi-même.