Ich habe gerade das Paket pandas and statsmodels auf meinem Python 2.7 installiert. Als ich versuchte, "Pandas als pd importieren", wurde diese Fehlermeldung ausgegeben. Kann jemand helfen? Vielen Dank!!!
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
Antworten:
(um meinen Kommentar etwas zu erweitern)
Numpy Entwickler befolgen im Allgemeinen die Richtlinie, eine abwärtskompatible binäre Schnittstelle (ABI) beizubehalten. Der ABI ist jedoch nicht vorwärtskompatibel.
Was das bedeutet:
Ein Paket, das numpy in einer kompilierten Erweiterung verwendet, wird gegen eine bestimmte Version von numpy kompiliert. Zukünftige Versionen von numpy sind mit der kompilierten Erweiterung des Pakets kompatibel (Ausnahme siehe unten). Distributoren dieser anderen Pakete müssen ihr Paket nicht mit einer neueren Version von numpy neu kompilieren, und Benutzer müssen diese anderen Pakete nicht aktualisieren, wenn Benutzer auf eine neuere Version von numpy aktualisieren.
Dies geht jedoch nicht in die andere Richtung. Wenn ein Paket mit einer bestimmten Numpy-Version kompiliert wird, z. B. 1.7, gibt es keine Garantie dafür, dass die Binärdateien dieses Pakets mit älteren Numpy-Versionen, z. B. 1.6, funktionieren, und dies sehr oft oder meistens nicht.
Die binäre Verteilung von Paketen wie Pandas und Statistikmodellen, die gegen eine aktuelle Version von numpy kompiliert wurden, funktioniert nicht, wenn eine ältere Version von numpy installiert ist. Einige Pakete, zum Beispiel matplotlib, kompilieren, wenn ich mich richtig erinnere, ihre Erweiterungen mit der ältesten von ihnen unterstützten Numpy-Version. In diesem Fall können Benutzer mit derselben alten oder einer neueren Version von numpy diese Binärdateien verwenden.
Die Fehlermeldung in der Frage ist ein typisches Ergebnis von binären Inkompatibilitäten.
Die Lösung besteht darin, eine binärkompatible Version zu erhalten, indem Sie numpy entweder auf mindestens die Version aktualisieren, für die Pandas oder Statistikmodelle kompiliert wurden, oder Pandas und Statistikmodelle gegen die ältere Version von numpy neu kompilieren, die bereits installiert ist.
Unterbrechen der ABI-Abwärtskompatibilität:
Manchmal brechen Verbesserungen oder Umgestaltungen bei Numpy die Abwärtskompatibilität von ABI. Dies geschah (ungewollt) mit numpy 1.4.0. Infolgedessen hatten Benutzer, die numpy auf 1.4.0 aktualisiert hatten, binäre Inkompatibilitäten mit allen anderen kompilierten Paketen, die gegen eine frühere Version von numpy kompiliert wurden. Dies erfordert, dass alle Pakete mit binären Erweiterungen, die numpy verwenden, neu kompiliert werden müssen, um mit der ABI-inkompatiblen Version zu arbeiten.
quelle
Für mich (Mac OS X Maverics, Python 2.7)
geholfen. Danach können Sie aktuelle Pakete Pandas , Scikit-Learn usw. mit pip installieren :
quelle
Ich fand es eine einfache Version, die veraltet oder nicht übereinstimmend war und wurde behoben mit:
Oder könnte mit dem einen Liner arbeiten:
quelle
Ich hatte einen ähnlichen Fehler mit einer anderen Bibliothek und stellte fest, dass auf meinem System mehrere Versionen von numpy installiert waren. Die Lösung für mich bestand darin, meinen PYTHONPATH zu bearbeiten und die Site-Pakete, die die neueste Version von numpy enthielten, an die erste Stelle zu setzen.
quelle
Wie hier hat bei mir nur
sudo pip install pandas==0.13.1
funktioniertquelle
Ich stoße auch auf diesen Fehler, wenn ich Pandas verwende, um auf MYSQL zuzugreifen. Diese Fehlermeldung weist auf ein binärkompatibles Problem hin und kann mithilfe der neuesten Version von pandas und numpy package behoben werden. Hier sind meine Schritte, um dieses Problem zu beheben, und es funktioniert gut auf meinem Ubuntu 12.04:
quelle
File "numpy/core/setup.py", line 654, in get_mathlib_info RuntimeError: Broken toolchain: cannot link a simple C program
In meinem Fall hatte ich pandas-0.10.0.win-amd64-py2.7 installiert, überprüfte jedoch, ob ein Fehler in einer neueren Version von pandas behoben wurde. Also habe ich easy_install -U durchgeführt, um das Upgrade zu erzwingen, aber dann den obigen Fehler aufgrund einiger Inkompatibilitäten mit numpy usw. erhalten, als ich dies tat
Um das Problem zu beheben, habe ich gerade die Binärdatei pandas-0.10.0.win-amd64-py2.7 neu installiert und alles funktioniert. Ich habe diese Antwort nicht gesehen (schlägt vor, pip zu verwenden), was mir möglicherweise geholfen hat (obwohl ich nicht sicher bin ), eine bestimmte Version mit easy_install zu installieren
Dies zeigt auch, warum man virtualenv verwenden sollte (was ich nicht war).
quelle
Für mich (Mac OS X Mavericks) hat es funktioniert, die Version für Python2.6 zu installieren:
dann renne:
quelle
Das Problem, das ich bei Webfaction gelöst habe, war die alte Numpy-Bibliothek (1.5), die im Widerspruch zu meiner neuen stand
Installation in .virtualenv.
Das Problem wurde gelöst, nachdem ich Pandas aus der virtuellen Umgebung heraus installiert hatte. Die Idee kam aus der Diskussion auf https://github.com/pydata/pandas/issues/3711 , danke, cpcloud !
quelle
Ich habe gerade dieses 'ValueError'-Problem gelöst und es behoben. Auf jeden Fall stimmt etwas mit dem numpy-Paket nicht.
Aber wenn ich es versuche, ist
pip install --upgrade numpy
es fehlgeschlagen, also deinstalliere ich die neuestenumpy.zip
Datei und lade sie herunter . Dann manuell dekomprimieren undpython setup.py install
es.Zum Glück funktioniert es!
quelle
sudo pip install --upgrade numpy
und es hat funktioniert.Wie @ user333700 sagte, treffen sich die erforderlichen Versionen der Bibliotheken möglicherweise nicht. Sie erhalten eine Bibliothek als Abhängigkeit einer anderen. Ohne zu wissen, dass es bereits als Abhängigkeit installiert wurde, benötigen Sie diese spezifische Bibliothek und installieren eine Version. Auf diese Weise können Abhängigkeiten durcheinander geraten.
Ich habe einen solchen Fall gelebt und nach einer Lösung gesucht. Gefunden: https://stackoverflow.com/a/12975518/1694344
Ich hatte zwei verschiedene Versionen für die Ei-Info-Datei und den Ordnernamen von numpy:
Ich habe sie alle entfernt und numpy mit pip neu installiert.
quelle
Ich hatte ein ähnliches Problem und installierte es einfach mit neu
pip install ...
wie in den vorherigen Kommentaren vorgeschlagen, funktionierte nicht.Was für mich funktioniert hat, war die
pip install --no-cache-dir ...
Neuinstallation mit dem hinzugefügten Flag . Anscheinend gab es irgendwo im Cache eine inkompatible Numpy-Version.quelle
Es gibt Fälle, in denen Sie eine bestimmte NumPy-Version behalten möchten und die hier erwähnte Upgrade-Option nicht funktioniert. Ein Beispiel, das mir einfiel, war die mit ArcGIS vorinstallierte Python-Distribution. Damit ArcPy in ArcGIS 10.5.1 funktioniert, muss diese Distribution Python 2.7.12 mit NumPy 1.9.3 sein, und jede andere Version von NumPy wird wahrscheinlich Probleme mit Ihrer ArcPy-Funktionalität verursachen.
In diesem Fall können Sie versuchen, eine bestimmte ältere Version der problematischen Drittanbieter-Bibliothek zu installieren, die mit der älteren NumPy-Version von ArcGIS kompatibel sein soll.
Zum Beispiel würde scikit-learn 0.19.1 NICHT mit NumPy 1.9.3 funktionieren und zu demselben Fehler führen, den Sie erwähnt haben. Scikit-learn 0.15 funktioniert jedoch einwandfrei. Sie können verschiedene Versionen testen, um die funktionierende zu finden. Erwähnen Sie einfach die Versionsnummer durch pip:
quelle