Saya baru saja menginstal paket pandas dan statsmodels di python 2.7 saya. Ketika saya mencoba "import pandas as pd", pesan kesalahan ini keluar. Adakah yang bisa membantu? Terima kasih!!!
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
sumber
sumber
Jawaban:
(untuk memperluas sedikit komentar saya)
Pengembang Numpy secara umum mengikuti kebijakan untuk mempertahankan antarmuka biner yang kompatibel dengan versi sebelumnya (ABI). Namun, ABI tidak kompatibel ke depan.
Apa itu artinya:
Sebuah paket, yang menggunakan numpy dalam ekstensi terkompilasi, dikompilasi terhadap versi numpy tertentu. Versi numpy yang akan datang akan kompatibel dengan ekstensi paket yang telah dikompilasi (untuk pengecualian lihat di bawah). Distributor paket lain tersebut tidak perlu mengkompilasi ulang paket mereka terhadap versi numpy yang lebih baru dan pengguna tidak perlu memperbarui paket lain ini, ketika pengguna memperbarui ke versi numpy yang lebih baru.
Namun, ini tidak menuju ke arah lain. Jika sebuah paket dikompilasi terhadap versi numpy tertentu, katakanlah 1.7, maka tidak ada jaminan bahwa binari dari paket itu akan bekerja dengan versi numpy yang lebih lama, katakanlah 1.6, dan seringkali atau sebagian besar waktu tidak akan berfungsi.
Distribusi biner dari paket-paket seperti pandas dan statsmodels, yang dikompilasi terhadap versi terbaru dari numpy, tidak akan berfungsi ketika versi lama dari numpy diinstal. Beberapa paket, misalnya matplotlib, jika saya ingat dengan benar, mengkompilasi ekstensi mereka terhadap versi numpy terlama yang mereka dukung. Dalam hal ini, pengguna dengan versi lama yang sama atau versi yang lebih baru dari numpy dapat menggunakan biner tersebut.
Pesan kesalahan dalam pertanyaan adalah hasil tipikal dari inkompatibilitas biner.
Solusinya adalah mendapatkan versi yang kompatibel dengan biner, baik dengan memperbarui numpy setidaknya ke versi yang menjadi dasar kompilasi pandas atau statsmodels, atau dengan mengkompilasi ulang pandas dan statsmodels terhadap versi lama dari numpy yang sudah diinstal.
Memecah kompatibilitas mundur ABI:
Terkadang peningkatan atau pemfaktoran ulang di numpy merusak kompatibilitas mundur ABI. Ini terjadi (tidak sengaja) dengan numpy 1.4.0. Akibatnya, pengguna yang mengupdate numpy ke 1.4.0, mengalami inkompatibilitas biner dengan semua paket terkompilasi lainnya, yang dikompilasi terhadap versi numpy sebelumnya. Hal ini mengharuskan semua paket dengan ekstensi biner yang menggunakan numpy harus dikompilasi ulang untuk bekerja dengan versi yang tidak kompatibel dengan ABI.
sumber
Bagi saya (Mac OS X Maverics, Python 2.7)
membantu. Setelah ini, Anda dapat menginstal paket terbaru pandas , scikit-learn , dll menggunakan pip :
sumber
Menurut saya, ini adalah versi sederhana yang kedaluwarsa atau tidak cocok dan diperbaiki dengan:
Atau mungkin bekerja dengan satu liner:
sumber
Saya mengalami kesalahan serupa dengan pustaka lain dan menyadari bahwa saya memiliki beberapa versi numpy yang diinstal di sistem saya. Perbaikan bagi saya adalah mengedit PYTHONPATH saya dan meletakkan paket situs yang berisi versi terbaru numpy di posisi pertama.
sumber
Seperti di sini , bagi saya hanya
sudo pip install pandas==0.13.1
bekerjasumber
Saya juga mengalami kesalahan ini saat menggunakan panda untuk mengakses MYSQL. Pesan kesalahan ini menunjukkan masalah kompatibel biner dan dapat diselesaikan dengan menggunakan versi terbaru dari paket pandas dan numpy. Berikut adalah langkah-langkah saya untuk menyelesaikan masalah ini, dan berfungsi dengan baik di Ubuntu 12.04 saya:
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
sumber
File "numpy/core/setup.py", line 654, in get_mathlib_info RuntimeError: Broken toolchain: cannot link a simple C program
Dalam kasus saya, saya telah menginstal pandas-0.10.0.win-amd64-py2.7 tetapi sedang memeriksa untuk melihat apakah bug telah diperbaiki di versi panda yang lebih baru. Jadi saya melakukan easy_install -U untuk memaksa peningkatan, tetapi kemudian mendapat kesalahan di atas karena beberapa ketidakcocokan dengan numpy dll ... ketika saya melakukannya
import pandas
Untuk memperbaikinya, saya baru saja menginstal ulang biner pandas-0.10.0.win-amd64-py2.7 dan semuanya berfungsi. Saya tidak melihat jawaban ini (menyarankan untuk menggunakan pip) yang mungkin telah membantu saya (meskipun tidak yakin) Instal versi tertentu dengan easy_install
Juga ini menyoroti mengapa seseorang harus menggunakan virtualenv (yang saya tidak).
sumber
Bagi saya (Mac OS X Mavericks) berhasil menginstal versi untuk python2.6:
lalu lari:
python2.6 myscript.py
sumber
Masalah yang saya selesaikan di Webfaction adalah pustaka numpy lama (1.5) yang bertentangan dengan yang baru
instalasi di .virtualenv.
Masalahnya terpecahkan setelah saya melakukan pip install pandas dari lingkungan virtual. Idenya datang dari diskusi di https://github.com/pydata/pandas/issues/3711 , terima kasih, cpcloud !
sumber
Saya baru saja menemui masalah 'ValueError' ini dan telah mengatasinya. Pasti ada yang salah dengan paket numpy.
Tapi ketika saya coba
pip install --upgrade numpy
gagal, jadi saya uninstall dan downloadnumpy.zip
file terbaru . Kemudian secara manual buka kompres danpython setup.py install
itu.Untungnya, ini berhasil!
sumber
sudo pip install --upgrade numpy
dan berhasil.Seperti yang dikatakan @ user333700, versi pustaka yang diperlukan mungkin tidak saling bertemu. Anda mendapatkan satu pustaka sebagai dependensi lainnya. Kemudian tanpa mengetahui itu sudah diinstal sebagai dependensi, Anda memerlukan pustaka khusus itu dan Anda menginstal satu versi. Dengan cara seperti itu, dependensi dapat mengacaukan.
Saya menjalani kasus seperti itu dan mencari solusi. Menemukan ini: https://stackoverflow.com/a/12975518/1694344
Saya memiliki dua versi berbeda untuk file info telur dan nama folder 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
Saya menghapus semuanya dan menginstal ulang numpy dengan pip.
sumber
Saya mengalami masalah serupa, dan cukup menginstal ulang menggunakan
pip install ...
seperti yang disarankan dalam komentar sebelumnya tidak berfungsi.Apa yang berhasil untuk saya adalah menginstal ulang dengan bendera yang ditambahkan
pip install --no-cache-dir ...
, tampaknya ada versi numpy yang tidak kompatibel di suatu tempat di cache.sumber
Ada kasus di mana Anda ingin menyimpan versi NumPy tertentu dan opsi peningkatan yang disebutkan di sini tidak akan berfungsi. Contoh yang terpikir oleh saya adalah distribusi Python yang sudah diinstal sebelumnya dengan ArcGIS. Agar ArcPy dapat bekerja di ArcGIS 10.5.1, distribusi tersebut harus Python 2.7.12 dengan NumPy 1.9.3 dan versi NumPy lainnya mungkin akan menyebabkan masalah dengan fungsionalitas ArcPy Anda.
Apa yang dapat Anda lakukan dengan kasus ini adalah mencoba menginstal versi tertentu dari perpustakaan pihak ketiga yang bermasalah yang seharusnya kompatibel dengan versi NumPy yang lebih lama yang dimiliki ArcGIS.
Misalnya, scikit-learn 0.19.1 TIDAK akan beroperasi dengan NumPy 1.9.3 dan akan menghasilkan kesalahan yang sama seperti yang Anda sebutkan. Namun, scikit-learn 0.15 berfungsi dengan baik. Anda dapat menguji berbagai versi untuk menemukan versi yang berfungsi. Sebutkan saja nomor versinya melalui pip:
python -m pip install scikit-learn==0.15
sumber