Właśnie zainstalowałem pakiet pandy i statsmodels na moim Pythonie 2.7. Kiedy próbowałem „zaimportować pandy jako pd”, pojawia się ten komunikat o błędzie. Czy ktoś może pomóc? Dzięki!!!
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
źródło
źródło
Odpowiedzi:
(aby nieco rozwinąć mój komentarz)
Deweloperzy Numpy kierują się generalnie zasadą zachowania wstecznego kompatybilnego interfejsu binarnego (ABI). Jednak ABI nie jest kompatybilny w przód.
Co to znaczy:
Pakiet, który używa numpy w skompilowanym rozszerzeniu, jest kompilowany względem określonej wersji numpy. Przyszła wersja numpy będzie kompatybilna z skompilowanym rozszerzeniem pakietu (wyjątek opisano poniżej). Dystrybutorzy tych innych pakietów nie muszą rekompilować swoich pakietów z nowszymi wersjami numpy, a użytkownicy nie muszą aktualizować tych innych pakietów, gdy użytkownicy aktualizują do nowszej wersji numpy.
Jednak to nie idzie w innym kierunku. Jeśli pakiet jest kompilowany na konkretną wersję numpy, powiedzmy 1.7, to nie ma gwarancji, że pliki binarne tego pakietu będą działać ze starszymi wersjami numpy, powiedzmy 1.6, i bardzo często lub w większości przypadków nie będą.
Binarna dystrybucja pakietów, takich jak pandy i statsmodels, które są kompilowane z najnowszą wersją numpy, nie będzie działać, gdy zostanie zainstalowana starsza wersja numpy. Niektóre pakiety, na przykład matplotlib, o ile dobrze pamiętam, kompilują swoje rozszerzenia z najstarszą wersją numpy, którą obsługują. W takim przypadku użytkownicy z tą samą starą lub nowszą wersją numpy mogą korzystać z tych plików binarnych.
Komunikat o błędzie w pytaniu jest typowym wynikiem niezgodności binarnych.
Rozwiązaniem jest uzyskanie kompatybilnej wersji binarnej, albo przez aktualizację numpy do przynajmniej wersji, dla której skompilowano pandy lub modele statsmodels, albo przez przekompilowanie pand i modeli statsmodels ze starszą wersją numpy, która jest już zainstalowana.
Łamanie wstecznej kompatybilności ABI:
Czasami ulepszenia lub refaktoryzacje w Numpy Break kompatybilność wsteczna ABI. Stało się to (nieumyślnie) z numpy 1.4.0. W rezultacie użytkownicy, którzy zaktualizowali numpy do wersji 1.4.0, mieli binarne niezgodności ze wszystkimi innymi skompilowanymi pakietami, które zostały skompilowane z poprzednią wersją numpy. Wymaga to, aby wszystkie pakiety z rozszerzeniami binarnymi, które używają numpy, musiały zostać ponownie skompilowane do pracy z wersją niezgodną z ABI.
źródło
Dla mnie (Mac OS X Maverics, Python 2.7)
pomógł. Następnie możesz zainstalować aktualne pakiety pandy , scikit-learn itp. Za pomocą pip :
źródło
Okazało się, że jest to prosta wersja, która jest nieaktualna lub niezgodna i została naprawiona za pomocą:
Lub może pracować z jedną wkładką:
źródło
Miałem podobny błąd z inną biblioteką i zdałem sobie sprawę, że mam kilka wersji numpy zainstalowanych w moim systemie. Rozwiązaniem dla mnie była edycja mojej PYTHONPATH i umieszczenie pakietów witryn, które zawierały najnowszą wersję numpy na pierwszym miejscu.
źródło
Jak tutaj , tylko dla mnie
sudo pip install pandas==0.13.1
zadziałałoźródło
Napotykam również ten błąd podczas korzystania z pand w celu uzyskania dostępu do MYSQL. Ten komunikat o błędzie wskazuje na problem ze zgodnością binarną i można go rozwiązać za pomocą najnowszej wersji pandas i pakietu numpy. Oto moje kroki, aby rozwiązać ten problem i działa dobrze na moim 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
źródło
File "numpy/core/setup.py", line 654, in get_mathlib_info RuntimeError: Broken toolchain: cannot link a simple C program
W moim przypadku zainstalowałem pandas-0.10.0.win-amd64-py2.7, ale sprawdzałem, czy błąd został naprawiony w nowszej wersji pand. Więc zrobiłem easy_install -U, aby wymusić aktualizację, ale potem otrzymałem powyższy błąd z powodu pewnych niezgodności z numpy itp ... kiedy to zrobiłem
import pandas
Aby naprawić, po prostu ponownie zainstalowałem plik binarny pandas-0.10.0.win-amd64-py2.7 i wszystko działa. Nie widziałem tej odpowiedzi (sugeruje użycie pip), która mogła mi pomóc (choć nie jestem pewien) Zainstaluj konkretną wersję za pomocą easy_install
To również podkreśla, dlaczego powinno się używać virtualenv (którego nie byłem).
źródło
U mnie (Mac OS X Mavericks) udało się zainstalować wersję dla pythona2.6:
następnie uruchomić:
python2.6 myscript.py
źródło
Problem, który rozwiązałem w Webfaction, to stara biblioteka numpy (1.5), która była w konflikcie z moim świeżym
instalacja w .virtualenv.
Problem został rozwiązany po tym, jak zainstalowałem pip pandy poza środowiskiem wirtualnym. Pomysł wziął się z dyskusji na https://github.com/pydata/pandas/issues/3711 , dzięki, cpcloud !
źródło
Właśnie spotkałem się z problemem „ValueError” i rozwiązałem go. Zdecydowanie coś jest nie tak z pakietem numpy.
Ale kiedy próbuję
pip install --upgrade numpy
nie udać, odinstalowuję i pobieram najnowszynumpy.zip
plik. Następnie ręcznie rozpakuj ipython setup.py install
to.Na szczęście to działa!
źródło
sudo pip install --upgrade numpy
i zadziałało.Jak powiedział @ user333700, wymagane wersje bibliotek mogą się nie spotkać. Otrzymujesz jedną bibliotekę jako zależność innej. Następnie, nie wiedząc, że została już zainstalowana jako zależność, potrzebujesz tej konkretnej biblioteki i instalujesz jedną wersję. W ten sposób zależności mogą zepsuć.
Przeżyłem taki przypadek i szukałem rozwiązania. Znalazłem to: https://stackoverflow.com/a/12975518/1694344
Miałem dwie różne wersje pliku egg-info i nazwę folderu 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
Usunąłem je wszystkie i ponownie zainstalowałem numpy z pip.
źródło
Miałem podobny problem i po prostu ponowna instalacja,
pip install ...
jak sugerowano w poprzednich komentarzach, nie działała.To, co zadziałało, to ponowna instalacja z dodaną flagą
pip install --no-cache-dir ...
, wygląda na to, że gdzieś w pamięci podręcznej znajdowała się niekompatybilna wersja numpy.źródło
Są przypadki, w których chcesz zachować określoną wersję NumPy, a wspomniana tutaj opcja aktualizacji nie zadziała. Przykładem, który przyszedł mi do głowy, była dystrybucja Pythona z preinstalowanym ArcGIS. Aby ArcPy działało w ArcGIS 10.5.1, ta dystrybucja musi być w Pythonie 2.7.12 z NumPy 1.9.3, a każda inna wersja NumPy prawdopodobnie spowoduje problemy z funkcjonalnością ArcPy.
W tym przypadku możesz spróbować zainstalować określoną, starszą wersję problematycznej biblioteki innej firmy, która ma być zgodna ze starszą wersją NumPy, którą ma ArcGIS.
Na przykład scikit-learn 0.19.1 NIE będzie działać z NumPy 1.9.3 i spowoduje ten sam błąd, o którym wspomniałeś. Jednak scikit-learn 0.15 działa dobrze. Możesz przetestować różne wersje, aby znaleźć tę, która działa. Wystarczy podać numer wersji przez pip:
python -m pip install scikit-learn==0.15
źródło