64 votes

ImportError : Aucun module nommé 'pandas.core.internals.managers' ; 'pandas.core.internals' n'est pas un paquet.

Lorsque j'ai essayé de lire un fichier pickle qui avait été sauvegardé par une ancienne version de pandas, j'ai obtenu un message de type ImportError .

ImportError : Aucun module nommé 'pandas.core.internals.managers' ; pandas.core.internals' n'est pas un paquet.

Il n'y a pas eu de réponse sur stackoverflow donc je voudrais partager ma solution pour ce problème particulier.

67voto

Fatih1923 Points 927

Cette erreur est due à l'encodage du fichier pickle précédemment enregistré. Si vous avez mis à jour pandas avec la nouvelle version, il produit cette erreur d'importation.

26voto

Chandan Points 238

J'étais confronté à la même erreur lorsque j'utilisais la version de pandas 0.23.4 .

J'ai installé pandas 0.24.1 version explicitement par :

pip3 install pandas==0.24.1

Cela a résolu mon problème (la version de Python que j'utilisais était la 3.5).

10voto

Charles dc Points 101

J'ai eu le même problème, mais pour moi, il semblait provenir du paquet pickle / de l'interaction avec le paquet pandas.

J'avais la version 0.23.4 de Pandas. J'ai enregistré des fichiers pickle avec pandas.Dataframe.to_pickle avec python 3.6.6 et Pandas version 0.23.4. Puis j'ai mis à jour vers python 3.7.2 (Pandas version 0.23.4), et j'ai pu lire ces fichiers pickle avec pandas.Dataframe.read_pickle . Ensuite, j'ai mis à niveau pandas vers pandas 0.24.1, et cela a fonctionné pour moi. Je peux à nouveau lire ces fichiers.

4voto

Gengyu Shi Points 71

La mise à jour de pandas serait la meilleure solution dans la plupart des cas. Cependant, si la mise à jour de votre version de pandas est limitée et que vous avez besoin de consommer des objets pandas produits et décapés dans une version supérieure, vous pouvez ajouter une carte de localisation des classes comme ci-dessous.

from pandas.compat.pickle_compat import _class_locations_map

_class_locations_map.update({
    ('pandas.core.internals.managers', 'BlockManager'): ('pandas.core.internals', 'BlockManager')
})

2voto

Bstampe Points 329

conda update pandas

Si vous utilisez le gestionnaire de paquets Conda.

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