Je viens d'installer le paquet pandas et statsmodels sur mon python 2.7 Quand j'ai essayé "importer des pandas en tant que pd", ce message d'erreur apparaît. Quelqu'un peut-il aider? Merci!!!
numpy.dtype has the wrong size, try recompiling
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "C:\analytics\ext\python27\lib\site-packages\statsmodels-0.5.0-py2.7-win32.egg\statsmodels\formula\__init__.py",
line 4, in <module>
from formulatools import handle_formula_data
File "C:\analytics\ext\python27\lib\site-packages\statsmodels-0.5.0-py2.7-win32.egg\statsmodels\formula\formulatools.p
y", line 1, in <module>
import statsmodels.tools.data as data_util
File "C:\analytics\ext\python27\lib\site-packages\statsmodels-0.5.0-py2.7-win32.egg\statsmodels\tools\__init__.py", li
ne 1, in <module>
from tools import add_constant, categorical
File "C:\analytics\ext\python27\lib\site-packages\statsmodels-0.5.0-py2.7-win32.egg\statsmodels\tools\tools.py", line
14, in <module>
from pandas import DataFrame
File "C:\analytics\ext\python27\lib\site-packages\pandas\__init__.py", line 6, in <module>
from . import hashtable, tslib, lib
File "numpy.pxd", line 157, in init pandas.tslib (pandas\tslib.c:49133)
ValueError: numpy.dtype has the wrong size, try recompiling
python
numpy
installation
pandas
statsmodels
Amber Chen
la source
la source
Réponses:
(pour développer un peu mon commentaire)
Les développeurs Numpy suivent en général une politique de conservation d'une interface binaire rétrocompatible (ABI). Cependant, l'ABI n'est pas compatible vers l'avant.
Ce que cela signifie:
Un package, qui utilise numpy dans une extension compilée, est compilé avec une version spécifique de numpy. La future version de numpy sera compatible avec l'extension compilée du paquet (pour l'exception voir ci-dessous). Les distributeurs de ces autres packages n'ont pas besoin de recompiler leur package avec une version plus récente de numpy et les utilisateurs n'ont pas besoin de mettre à jour ces autres packages, lorsque les utilisateurs mettent à jour vers une version plus récente de numpy.
Cependant, cela ne va pas dans l'autre sens. Si un paquet est compilé avec une version numpy spécifique, disons 1.7, alors il n'y a aucune garantie que les binaires de ce paquet fonctionneront avec des versions plus anciennes de numpy, disons 1.6, et très souvent ou la plupart du temps ils ne le seront pas.
La distribution binaire de paquets tels que pandas et statsmodels, compilés avec une version récente de numpy, ne fonctionnera pas lorsqu'une ancienne version de numpy est installée. Certains paquets, par exemple matplotlib, si je me souviens bien, compilent leurs extensions avec la version numpy la plus ancienne qu'ils prennent en charge. Dans ce cas, les utilisateurs avec la même ancienne version ou une version plus récente de numpy peuvent utiliser ces binaires.
Le message d'erreur dans la question est un résultat typique d'incompatibilités binaires.
La solution consiste à obtenir une version compatible binaire, soit en mettant à jour numpy au moins vers la version avec laquelle les pandas ou les statsmodels ont été compilés, soit en recompilant les pandas et les statsmodels avec l'ancienne version de numpy qui est déjà installée.
Rompre la rétrocompatibilité ABI:
Parfois, des améliorations ou des refactorisations dans numpy cassent la rétrocompatibilité ABI. Cela s'est produit (involontairement) avec numpy 1.4.0. En conséquence, les utilisateurs qui ont mis à jour numpy vers la version 1.4.0 avaient des incompatibilités binaires avec tous les autres packages compilés, compilés avec une version précédente de numpy. Cela nécessite que tous les packages avec des extensions binaires qui utilisent numpy doivent être recompilés pour fonctionner avec la version incompatible ABI.
la source
Pour moi (Mac OS X Maverics, Python 2.7)
aidé. Après cela, vous pouvez installer les packages à jour pandas , scikit-learn , etc. en utilisant pip :
la source
J'ai trouvé que c'était une version simple obsolète ou incompatible et a été corrigée avec:
Ou pourrait fonctionner avec la doublure unique:
la source
J'ai eu une erreur similaire avec une autre bibliothèque et j'ai réalisé que plusieurs versions de numpy étaient installées sur mon système. Le correctif pour moi était de modifier mon PYTHONPATH et de mettre les packages de site contenant la dernière version de numpy en première position.
la source
Comme ici , pour moi seulement
sudo pip install pandas==0.13.1
travailléla source
Je rencontre également cette erreur lorsque j'utilise des pandas pour accéder à MYSQL. Ce message d'erreur indique un problème de compatibilité binaire et peut être résolu en utilisant la dernière version de pandas et le package numpy. Voici mes étapes pour résoudre ce problème, et cela fonctionne bien sur mon Ubuntu 12.04:
cd /tmp/ wget https://pypi.python.org/packages/source/p/pandas/pandas-0.12.0.tar.gz tar xzvf pandas-0.12.0.tar.gz cd pandas-0.12.0 easy_install --upgrade numpy
la source
File "numpy/core/setup.py", line 654, in get_mathlib_info RuntimeError: Broken toolchain: cannot link a simple C program
Dans mon cas, j'avais installé pandas-0.10.0.win-amd64-py2.7 mais je vérifiais si un bogue avait été corrigé dans une version plus récente de pandas. J'ai donc fait un easy_install -U pour forcer la mise à niveau, mais j'ai ensuite eu l'erreur ci-dessus en raison de certaines incompatibilités avec numpy etc ... quand je l'ai fait
import pandas
Pour corriger, je viens de réinstaller le binaire pandas-0.10.0.win-amd64-py2.7 et tout fonctionne. Je n'ai pas vu cette réponse (suggère d'utiliser pip) qui m'a peut-être aidé (mais pas sûr) à installer une version particulière avec easy_install
Cela met également en évidence pourquoi on devrait utiliser virtualenv (ce que je n'étais pas).
la source
Pour moi (Mac OS X Mavericks), l'installation de la version pour python2.6 a fonctionné:
puis exécutez:
python2.6 myscript.py
la source
Le problème que j'ai résolu sur Webfaction était l'ancienne bibliothèque numpy (1.5) qui était en conflit avec ma nouvelle
installation dans .virtualenv.
Le problème a été résolu après avoir installé des pandas hors de l'environnement virtuel. L'idée est venue d'une discussion sur https://github.com/pydata/pandas/issues/3711 , merci, cpcloud !
la source
Je viens de rencontrer ce problème «ValueError» et je l'ai résolu. Il y a certainement quelque chose qui ne va pas avec le package numpy.
Mais lorsque j'essaye,
pip install --upgrade numpy
cela échoue, alors je désinstalle et télécharge lenumpy.zip
fichier le plus récent . Puis décompressez manuellement etpython setup.py install
il.Heureusement, ça marche!
la source
sudo pip install --upgrade numpy
et cela a fonctionné.Comme @ user333700 l'a dit, les versions requises des bibliothèques peuvent ne pas se rencontrer. Vous obtenez une bibliothèque en tant que dépendance d'une autre. Ensuite, sans savoir qu'elle était déjà installée en tant que dépendance, vous avez besoin de cette bibliothèque spécifique et vous installez une version. Avec de telles méthodes, les dépendances peuvent gâcher.
J'ai vécu un tel cas et j'ai cherché une solution. Trouvé ceci: https://stackoverflow.com/a/12975518/1694344
J'avais deux versions différentes pour le fichier egg-info et le nom de dossier de numpy:
drwxr-xr-x. 19 root root 4096 Sep 25 15:00 numpy drwxr-xr-x. 2 root root 4096 Sep 22 11:25 numpy-1.13.1.dist-info -rw-r--r--. 1 root root 1630 Nov 20 2015 numpy-1.7.1-py2.7.egg-info
Je les ai tous supprimés et réinstallé numpy avec pip.
la source
J'ai eu un problème similaire, et simplement réinstaller en utilisant
pip install ...
comme suggéré dans les commentaires précédents ne fonctionnait pas.Ce qui a fonctionné pour moi a été de réinstaller avec l'indicateur ajouté
pip install --no-cache-dir ...
, il semble qu'il y avait une version numpy incompatible quelque part dans le cache.la source
Dans certains cas, vous souhaitez conserver une version spécifique de NumPy et l'option de mise à niveau mentionnée ici ne fonctionnera pas. Un exemple qui m'est venu à l'esprit était la distribution Python préinstallée avec ArcGIS. Pour qu'ArcPy fonctionne dans ArcGIS 10.5.1, cette distribution doit être Python 2.7.12 avec NumPy 1.9.3 et toute autre version de NumPy va probablement causer des problèmes avec votre fonctionnalité ArcPy.
Ce que vous pouvez faire dans ce cas, c'est essayer d'installer une ancienne version spécifique de la bibliothèque tierce problématique qui est censée être compatible avec l'ancienne version de NumPy d'ArcGIS.
Par exemple, scikit-learn 0.19.1 ne fonctionnerait PAS avec NumPy 1.9.3 et entraînerait la même erreur que vous avez mentionnée. Cependant, scikit-learn 0.15 fonctionne correctement. Vous pouvez tester différentes versions pour trouver celle qui fonctionne. Mentionnez simplement le numéro de version via pip:
python -m pip install scikit-learn==0.15
la source