ValueError: numpy.dtype yanlış boyuta sahip, yeniden derlemeyi deneyin


86

Pandas ve statsmodels paketini python 2.7'ye yükledim. "Pandaları pd olarak içe aktarmayı" denediğimde bu hata mesajı çıkıyor. Biri yardım edebilir mi? Teşekkürler!!!

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
Pandaları nasıl kurdunuz?
Andy Hayden


Yeniden derlemeyi denediniz mi?
asmeurer

Neden python (x, y), enthought veya winpython dağıtımını kullanmıyorsunuz? Windows altında bilimsel python kullanıcıları için bu derleme ve kurulum sorunlarını ortadan kaldırmak için özel olarak tasarlanmıştır ve önceden derlenmesini isteyeceğiniz çoğu paketle birlikte gelir.
DaveP

39
Bu mesaj, pandalar yüklediğinizden daha yeni bir uyuşmuş sürümle derlendiğinde görünür. Pandaları, yüklediğiniz numpy sürümüne göre yeniden derlemeniz veya numpy'yi güncellemeniz gerekir.
Josef

Yanıtlar:


65

(yorumumu biraz genişletmek için)

Numpy geliştiricileri, genel olarak geriye dönük uyumlu bir ikili arabirimi (ABI) tutma politikasını izler. Ancak, ABI ileriye dönük uyumlu değildir.

Bu ne demek:

Derlenmiş bir uzantıda numpy kullanan bir paket, belirli bir numpy sürümüne karşı derlenir. Numpy'nin gelecekteki sürümü, paketin derlenmiş uzantısı ile uyumlu olacaktır (istisna için aşağıya bakın). Bu diğer paketlerin dağıtıcılarının, paketlerini daha yeni bir numpy sürümüne karşı yeniden derlemeleri gerekmez ve kullanıcılar numpy'nin daha yeni bir sürümüne güncelleme yaptığında, kullanıcıların bu diğer paketleri güncellemelerine gerek yoktur.

Ancak, bu ters yönde gitmez. Bir paket belirli bir numpy sürümüne (örneğin 1.7) göre derlenirse, bu paketin ikili dosyalarının daha eski numpy sürümleriyle (örneğin 1.6) çalışacağının ve çoğu zaman veya çoğu zaman çalışmayacağının garantisi yoktur.

Yeni bir numpy sürümüne karşı derlenen pandalar ve istatistik modelleri gibi paketlerin ikili dağılımı, eski bir numpy sürümü yüklendiğinde çalışmayacaktır. Bazı paketler, örneğin matplotlib, eğer doğru hatırlıyorsam, uzantılarını destekledikleri en eski numpy sürümüne göre derler. Bu durumda, aynı eski veya daha yeni bir numpy sürümüne sahip kullanıcılar bu ikili dosyaları kullanabilir.

Söz konusu hata mesajı, ikili uyumsuzlukların tipik bir sonucudur.

Çözüm, ya numpy'yi en azından pandaların veya istatistik modellerinin derlendiği sürüme güncelleyerek ya da pandaları ve istatistik modellerini, daha önce kurulu olan numpy'nin eski sürümüne göre yeniden derleyerek, ikili uyumlu bir sürüm elde etmektir.

ABI geriye dönük uyumluluğunu kırmak:

Bazen ABI geriye dönük uyumluluğunu bozan iyileştirmeler veya yeniden düzenlemeler. Bu, uyuşuk 1.4.0 ile (istemeden) oldu. Sonuç olarak, numpy'yi 1.4.0'a güncelleyen kullanıcılar, önceki bir numpy sürümüne karşı derlenen diğer tüm derlenmiş paketlerle ikili uyumsuzluklara sahipti. Bu, numpy kullanan ikili uzantılara sahip tüm paketlerin ABI uyumsuz sürümüyle çalışması için yeniden derlenmesini gerektirir.


1
Uyuşuk ve pandaları güncellemeyi denedim ve hala bu hatayı alıyorum, Herhangi bir fikriniz var mı?
NotSoShabby

37

Benim için (Mac OS X Maverics, Python 2.7)

easy_install --upgrade numpy

yardım etti. Bundan sonra , pip kullanarak güncel pandalar , scikit-learn , vb. Paketleri kurabilirsiniz :

pip install pandas

3
"Easy_install --upgrade numpy" i çalıştırdım, ancak pandalar ve k scikit-learn gibi güncel ilgili paketleri yüklemedim. Her şey de yolunda.
xjzhou

Benim için de çalıştı (Ubuntu
14.04

30

Güncelliğini yitirmiş veya uyumsuz olan basit bir sürüm olarak buldum ve şu sorunla düzeltildi:

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

Veya tek astar ile çalışabilir:

pip install --upgrade numpy scipy pandas

OSX'teki el capitan değişiklikleriyle, pip'in sistem dosyalarının üzerine yazmasını önlemek için ek bir argüman olarak --user kullanmanızı öneririm. Aksi takdirde kullanıcılar sudo kullanmak için cazip hissedeceklerdir.
Roy Iacob

@ Roy- Bu, sistem python'un kullanılıp kullanılmadığına veya brew python ile demleme sürümü afaik-sudo'ya ihtiyaç duyulmamasına bağlıdır.
RexFuzzle

5

Başka bir kitaplıkta benzer bir hata aldım ve sistemimde birkaç numpy sürümünün yüklü olduğunu fark ettim. Benim için düzeltme, PYTHONPATH'ımı düzenlemek ve numpy'nin en son sürümünü içeren site paketlerini ilk konuma yerleştirmekti.


2

Olduğu gibi burada , benim için tek sudo pip install pandas==0.13.1çalıştı


1

MYSQL'e erişmek için pandaları kullandığımda da bu hatayla karşılaşıyorum. Bu hata mesajı, ikili uyumlu bir sorunu belirtir ve pandalar ve numpy paketinin en son sürümü kullanılarak çözülebilir. İşte bu sorunu çözme adımlarım ve Ubuntu 12.04'ümde iyi çalışıyor:

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

1
Bunu yaptım ve bu hatayı aldımFile "numpy/core/setup.py", line 654, in get_mathlib_info RuntimeError: Broken toolchain: cannot link a simple C program
Mona Jalal

1

Benim durumumda, pandas-0.10.0.win-amd64-py2.7'yi kurdum, ancak pandaların daha yeni bir sürümünde bir hatanın düzeltilip düzeltilmediğini kontrol ediyordum. Bu yüzden yükseltmeyi zorlamak için bir easy_install -U yaptım, ancak daha sonra numpy vb. İle bazı uyumsuzluklar nedeniyle yukarıdaki hatayı aldım ... yaptığımda

import pandas

Düzeltmek için pandas-0.10.0.win-amd64-py2.7 ikilisini yeniden yükledim ve her şey çalışıyor. Bu yanıtı görmedim (pip kullanmayı öneriyor) bu bana yardımcı olabilir (emin olmasa da) easy_install ile belirli bir sürümü yükleyin

Ayrıca bu, bir kişinin neden virtualenv kullanması gerektiğini (ki ben olmadığımı) vurgular.


1

Benim için (Mac OS X Mavericks) python2.6 sürümünü yüklemek için çalıştı:

sudo port install py26-scikit-learn

o zaman koş:

python2.6 myscript.py


0

Bu 'ValueError' sorunuyla karşılaştım ve bu sorunu çözdüm. Kesinlikle numpy paketinde bir sorun var.

Ama denediğimde pip install --upgrade numpybaşarısız oldu, bu yüzden en yeni numpy.zipdosyayı kaldırıp indiriyorum . Sonra el ile sıkıştırın ve açın python setup.py install.

Neyse ki işe yarıyor!


Benim için de başarısız oldu. Sonra denedim sudo pip install --upgrade numpyve işe yaradı.
Sert Wardhan

0

@ User333700'ün dediği gibi, gerekli kitaplık sürümleri birbirini karşılamayabilir. Bir kitaplığı diğerinin bağımlılığı olarak alırsınız. Daha sonra bağımlılık olarak zaten kurulduğunu bilmeden, o özel kitaplığa ihtiyacınız var ve bir sürüm kuruyorsunuz. Bu tür yollarla bağımlılıklar karışabilir.

Böyle bir vakayı yaşadım ve bir çözüm aradım. Bunu buldum : https://stackoverflow.com/a/12975518/1694344

Yumurta bilgi dosyası ve numpy klasör adı için iki farklı sürümüm vardı:

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

Hepsini çıkardım ve numpy'yi pip ile yeniden yükledim.


0

Benzer bir sorun yaşadım ve pip install ...önceki yorumlarda önerildiği gibi kullanarak yeniden yüklemek işe yaramadı.

Benim için işe pip install --no-cache-dir ...yarayan , eklenen bayrakla yeniden yüklemek oldu, önbellekte bir yerde uyumsuz bir uyuşuk sürüm var gibi görünüyor.


-1

Belirli bir NumPy sürümünü saklamak istediğiniz durumlar vardır ve burada bahsedilen yükseltme seçeneği çalışmayacaktır. Aklıma gelen bir örnek ArcGIS ile önceden yüklenmiş Python dağıtımıdır. ArcPy'nin ArcGIS 10.5.1'de çalışması için, dağıtımın NumPy 1.9.3 ile Python 2.7.12 olması gerekir ve NumPy'nin diğer herhangi bir sürümü muhtemelen ArcPy işlevselliğinizde sorunlara neden olacaktır.

Bu vaka ile yapabileceğiniz şey, sorunlu üçüncü taraf kitaplığının ArcGIS'in sahip olduğu eski NumPy sürümüyle uyumlu olması beklenen belirli, daha eski bir sürümünü yüklemeye çalışmaktır.

Örneğin, scikit-learn 0.19.1, NumPy 1.9.3 ile çalışmaz ve bahsettiğiniz aynı hataya neden olur. Ancak scikit-learn 0.15 iyi çalışıyor. Çalışanı bulmak için farklı sürümleri test edebilirsiniz. Sadece sürüm numarasını pip ile belirtin:

python -m pip install scikit-learn==0.15
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.