2013-07-17 8 views
81

Ho appena installato il pacchetto pandas e statsmodels sul mio python 2.7 Quando ho provato "import pandas come pd", questo messaggio di errore viene fuori. Qualcuno può aiutare? Grazie!!!ValueError: numpy.dtype ha la dimensione sbagliata, prova a ricompilare

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 
+1

Come hai installato i panda? –

+1

possibile duplicato di [Impossibile importare Scikit-Learn] (http://stackoverflow.com/questions/11464445/cannot-import-scikit-learn) – Bakuriu

+0

Hai provato a ricompilare? – asmeurer

risposta

59

(per espandere un po 'sul mio commento)

sviluppatori NumPy seguono in generale una politica di mantenere un rovescio un'interfaccia compatibile a livello binario (ABI). Tuttavia, l'ABI non è compatibile con le versioni precedenti.

Che cosa significa:

Un pacchetto, che utilizza NumPy in un'estensione compilato, è compilato contro una versione specifica di NumPy. La futura versione di numpy sarà compatibile con l'estensione compilata del pacchetto (per eccezioni vedi sotto). I distributori di quegli altri pacchetti non hanno bisogno di ricompilare il loro pacchetto con una nuova versione di numpy e gli utenti non hanno bisogno di aggiornare questi altri pacchetti, quando gli utenti aggiornano a una versione più recente di numpy.

Tuttavia, questo non va nella direzione opposta. Se un pacchetto è compilato su una specifica versione numpy, diciamo 1.7, non c'è alcuna garanzia che i binari di quel pacchetto funzioneranno con versioni di Numpy più vecchie, per esempio 1.6, e molto spesso o quasi sempre.

La distribuzione binaria di pacchetti come pandas e statsmodels, compilati rispetto a una versione recente di numpy, non funzionerà quando è installata una versione precedente di numpy. Alcuni pacchetti, ad esempio matplotlib, se ricordo bene, compilano le loro estensioni rispetto alla versione numpy più vecchia che supportano. In questo caso, gli utenti con la stessa versione vecchia o più recente di numpy possono utilizzare quei file binari.

Il messaggio di errore nella domanda è un tipico risultato di incompatibilità binarie.

La soluzione è quello di ottenere una versione compatibile binario, sia aggiornando NumPy ad almeno la versione contro il quale sono stati compilati panda o statsmodels, o ricompilare panda e statsmodels contro la versione precedente del NumPy che è già installato.

rompere la compatibilità ABI:

volte miglioramenti o rifattorizzazione in pausa NumPy ABI compatibilità. Questo è accaduto (involontariamente) con Numpy 1.4.0. Di conseguenza, gli utenti che hanno aggiornato numpy in 1.4.0 avevano incompatibilità binarie con tutti gli altri pacchetti compilati, che sono stati compilati rispetto a una versione precedente di numpy. Ciò richiede che tutti i pacchetti con estensioni binarie che usano numpy debbano essere ricompilati per funzionare con la versione incompatibile ABI.

5

Ho avuto un errore simile con un'altra libreria e mi sono reso conto che avevo diverse versioni di numpy installate sul mio sistema. La soluzione per me era modificare il mio PYTHONPATH e inserire i pacchetti del sito che contenevano l'ultima versione di numpy in prima posizione.

1

Ho riscontrato questo errore anche quando uso i panda per accedere a MYSQL. Questo messaggio di errore indica un problema di compatibilità binaria e può essere risolto con utilizzando l'ultima versione di panda e pacchetto di numpy. Ecco i miei passi per risolvere il problema, e funziona bene sul mio 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 
+0

Ho fatto questo e ottenuto questo errore 'File "NumPy/core/setup.py", la linea 654, in get_mathlib_info RuntimeError: Broken toolchain: non è possibile collegare un semplice program' C –

1

Nel mio caso, avevo installato i panda-0.10.0.win-amd64-py2.7 ma stava controllando per vedere se un bug era stato corretto in una versione più recente di panda. Così ho fatto un -U easy_install per forzare l'aggiornamento, ma poi ottenuto l'errore di cui sopra a causa di alcune incompatibilità con NumPy ecc ... quando l'ho fatto

import pandas 

Per risolvere, ho appena reinstallato il panda-0.10.0 .win-amd64-py2.7 binario e tutto funziona. Non ho visto questa risposta (suggerisce di usare pip) che potrebbe aiutarmi (anche se non sono sicuro) Install particular version with easy_install

Anche questo evidenzia perché si dovrebbe usare virtualenv (che non ero).

1

Per me (Mac OS X Mavericks) ha funzionato per installare la versione per python2.6:

sudo port install py26-scikit-learn 

quindi eseguire:

python2.6 myscript.py 
1

Il problema che ho risolto il Webfaction era vecchia biblioteca numpy (1.5), che era in conflitto con il mio fresco

pip install pandas

installazione in .virtualenv.

Il problema è stato risolto dopo che ho fatto pip installare i panda fuori dall'ambiente virtuale. L'idea è venuta dalla discussione su https://github.com/pydata/pandas/issues/3711, grazie, cpcloud!

35

Per me (Mac OS X Maverics, Python 2,7)

easy_install --upgrade numpy 

aiutato. Dopo questo è possibile installare pacchetti aggiornati panda, scikit-learn, e.t.c. utilizzando pip:

pip install pandas 
+3

Ho appena eseguito "easy_install --upgrade numpy" , ma non ha installato pacchetti correlati aggiornati come pandas andk scikit-learn. Va tutto bene anche – xjzhou

+0

Ha funzionato anche per me (Ubuntu 14.04, Python 2.7) –

+1

Funziona, grazie mille! – Derekyy

0

Ho appena incontrare questo problema 'ValueError' e hanno affrontato esso. Sicuramente c'è qualcosa di sbagliato nel pacchetto di numpy.

Ma quando provo a pip install --upgrade numpy non è riuscito, quindi disinstallare e scaricare il file più recente numpy.zip. Quindi manualmente uncompress e python setup.py install it.

Fortunatamente, funziona!

+0

Ha fallito anche per me. Quindi ho provato '' sudo pip install --upgrade numpy'' e ha funzionato. –

26

ho trovato che fosse una semplice versione di essere obsoleta o mancata corrispondenza e stato fissato con:

pip install --upgrade numpy 
pip install --upgrade scipy 
pip install --upgrade pandas 

Oppure potrebbe funzionare con l'uno di linea:

pip install --upgrade numpy scipy pandas 
+0

Con le modifiche di el capitan su OSX, si consiglia di utilizzare --user come argomento aggiuntivo per impedire a pip di sovrascrivere i file di sistema. Gli utenti si sentiranno altrimenti tentati di usare sudo. –

+0

@ Roy- Dipende se il python di sistema è in uso o se la versione di brew non dovrebbe essere necessaria con brew python. – RexFuzzle

2

Come in here, per me solo sudo pip install pandas==0.13.1 lavorato

0

Come @ utente333700 ha affermato, le versioni richieste delle librerie potrebbero non incontrarsi l'una con l'altra. Ottieni una libreria come dipendenza di un altro. Quindi, senza sapere che era già installato come dipendenza, hai bisogno di quella libreria specifica e ne installa una versione. Con tali modi le dipendenze potrebbero rovinarsi.

Ho vissuto un caso del genere e ho cercato una soluzione. Ho trovato questo: https://stackoverflow.com/a/12975518/1694344

ho avuto due versioni differenti per il file-uovo informazioni e nome della cartella di 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 

li ho rimosso e reinstallato NumPy con pip.