ValueError: numpy.dtype มีขนาดไม่ถูกต้องลองคอมไพล์ใหม่


86

ฉันเพิ่งติดตั้งแพกเกจแพนด้าและ statsmodels ใน python 2.7 เมื่อฉันลอง "นำเข้าแพนด้าเป็น pd" ข้อความแสดงข้อผิดพลาดนี้ปรากฏขึ้น ใครสามารถช่วย? ขอบคุณ !!!

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
คุณติดตั้งแพนด้าได้อย่างไร?
Andy Hayden


คุณลองคอมไพล์ใหม่ไหม
asmeurer

ทำไมไม่ใช้ python (x, y), enthought หรือ winpython distribution? ได้รับการออกแบบมาโดยเฉพาะเพื่อขจัดปัญหาการคอมไพล์และการติดตั้งสำหรับผู้ใช้ python ทางวิทยาศาสตร์ภายใต้ windows และมาพร้อมกับแพ็คเกจส่วนใหญ่ที่คุณอาจต้องการคอมไพล์ล่วงหน้า
DaveP

39
ข้อความนี้จะปรากฏขึ้นเมื่อมีการคอมไพล์แพนด้ากับเวอร์ชันที่ใหม่กว่าที่คุณติดตั้งไว้ คุณต้องคอมไพล์แพนด้าใหม่กับเวอร์ชัน numpy ที่คุณติดตั้งหรืออัปเดต numpy
Josef

คำตอบ:


65

(เพื่อขยายความคิดเห็นของฉัน)

นักพัฒนา Numpy ปฏิบัติตามนโยบายโดยทั่วไปในการรักษาไบนารีอินเทอร์เฟซ (ABI) ที่เข้ากันได้แบบย้อนหลัง อย่างไรก็ตาม ABI ไม่รองรับการส่งต่อ

หมายความว่าอย่างไร:

แพ็กเกจที่ใช้ numpy ในส่วนขยายที่คอมไพล์ถูกคอมไพล์เทียบกับเวอร์ชันเฉพาะของ numpy เวอร์ชันในอนาคตของ numpy จะเข้ากันได้กับส่วนขยายที่คอมไพล์แล้วของแพ็คเกจ (สำหรับข้อยกเว้นดูด้านล่าง) ผู้แจกจ่ายแพ็กเกจอื่น ๆ เหล่านั้นไม่จำเป็นต้องคอมไพล์แพ็กเกจซ้ำกับเวอร์ชันที่ใหม่กว่าของ numpy และผู้ใช้ไม่จำเป็นต้องอัปเดตแพ็กเกจอื่น ๆ เหล่านี้เมื่อผู้ใช้อัปเดตเป็นเวอร์ชันที่ใหม่กว่าของ numpy

อย่างไรก็ตามสิ่งนี้ไม่ได้ไปในทิศทางอื่น หากแพ็กเกจถูกคอมไพล์เทียบกับเวอร์ชัน numpy ที่ระบุให้พูด 1.7 จะไม่มีการรับประกันว่าไบนารีของแพ็กเกจนั้นจะทำงานร่วมกับเวอร์ชัน numpy ที่เก่ากว่าได้กล่าวว่า 1.6 และบ่อยครั้งหรือเกือบตลอดเวลาที่ใช้ไม่ได้

การกระจายไบนารีของแพ็กเกจเช่นแพนด้าและโมเดลสถิติที่คอมไพล์เทียบกับ numpy เวอร์ชันล่าสุดจะไม่ทำงานเมื่อติดตั้ง numpy เวอร์ชันเก่ากว่า บางแพ็กเกจเช่น matplotlib ถ้าจำไม่ผิดคอมไพล์ส่วนขยายเทียบกับเวอร์ชัน numpy ที่เก่าที่สุดที่รองรับ ในกรณีนี้ผู้ใช้ที่มี numpy เวอร์ชันเดิมหรือเวอร์ชันล่าสุดสามารถใช้ไบนารีเหล่านั้นได้

ข้อความแสดงข้อผิดพลาดในคำถามเป็นผลมาจากความไม่ลงรอยกันของไบนารี

วิธีแก้ปัญหาคือการรับเวอร์ชันที่เข้ากันได้กับไบนารีไม่ว่าจะโดยการอัปเดต numpy ให้เป็นเวอร์ชันที่คอมไพล์แพนด้าหรือโมเดลสถิติเป็นอย่างน้อยหรือเพื่อคอมไพล์แพนด้าและโมเดลใหม่เทียบกับเวอร์ชันเก่าของ numpy ที่ติดตั้งไว้แล้ว

ทำลายความเข้ากันได้ย้อนหลัง ABI:

บางครั้งการปรับปรุงหรือการปรับโครงสร้างใหม่ในความเข้ากันได้ย้อนหลัง ABI สิ่งนี้เกิดขึ้น (โดยไม่ได้ตั้งใจ) ด้วย numpy 1.4.0 เป็นผลให้ผู้ใช้ที่อัปเดต numpy เป็น 1.4.0 มีความเข้ากันไม่ได้ของไบนารีกับแพ็คเกจที่คอมไพล์อื่น ๆ ทั้งหมดซึ่งคอมไพล์เทียบกับ numpy เวอร์ชันก่อนหน้า สิ่งนี้กำหนดให้แพคเกจทั้งหมดที่มีส่วนขยายไบนารีที่ใช้ numpy จะต้องคอมไพล์ใหม่เพื่อให้ทำงานกับเวอร์ชันที่เข้ากันไม่ได้กับ ABI


1
ฉันลองอัปเดต numpy และแพนด้าแล้ว แต่ยังคงได้รับข้อผิดพลาดนี้มีความคิดใดบ้าง
NotSoShab โดย

37

สำหรับฉัน (Mac OS X Maverics, Python 2.7)

easy_install --upgrade numpy

ช่วย หลังจากนี้คุณสามารถติดตั้งได้ถึงวันที่แพคเกจหมีแพนด้า , scikit การเรียนรู้ฯลฯ โดยใช้pip :

pip install pandas

3
ฉันเพิ่งเรียกใช้ "easy_install --upgrade numpy" แต่ไม่ได้ติดตั้งแพ็คเกจที่เกี่ยวข้องล่าสุดเช่น pandas และk scikit-learn ทุกอย่างก็โอเคเช่นกัน
xjzhou

ทำงานให้ฉันด้วย (Ubuntu 14.04, Python 2.7)
Henry Chinner

30

ฉันพบว่ามันเป็นเวอร์ชันธรรมดาที่ล้าสมัยหรือไม่ตรงกันและได้รับการแก้ไขด้วย:

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

หรืออาจใช้กับซับเดียว:

pip install --upgrade numpy scipy pandas

ด้วยการเปลี่ยนแปลง el capitan บน OSX ฉันขอแนะนำให้ใช้ --user เป็นอาร์กิวเมนต์เพิ่มเติมเพื่อป้องกันไม่ให้ pip เขียนทับไฟล์ระบบ มิฉะนั้นผู้ใช้จะรู้สึกอยากใช้ sudo
Roy Iacob

@ Roy- สิ่งนี้ขึ้นอยู่กับว่ามีการใช้ python ของระบบหรือไม่ควรใช้เวอร์ชันชง afaik- sudo กับ brew python
RexFuzzle

5

ฉันมีข้อผิดพลาดที่คล้ายกันกับไลบรารีอื่นและตระหนักว่าฉันติดตั้ง numpy หลายเวอร์ชันในระบบของฉัน การแก้ไขสำหรับฉันคือแก้ไข PYTHONPATH ของฉันและวางไซต์แพ็คเกจที่มีเวอร์ชันล่าสุดของ numpy ในตำแหน่งแรก



1

ฉันยังพบข้อผิดพลาดนี้เมื่อใช้แพนด้าเพื่อเข้าถึง MYSQL ข้อความแสดงข้อผิดพลาดนี้บ่งชี้ถึงปัญหาที่เข้ากันได้กับไบนารีและสามารถแก้ไขได้โดยใช้เวอร์ชันล่าสุดของแพนด้าและแพ็คเกจ numpy นี่คือขั้นตอนของฉันในการแก้ไขปัญหานี้และใช้ได้ดีบน 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

1
ฉันทำสิ่งนี้และได้รับข้อผิดพลาดนี้File "numpy/core/setup.py", line 654, in get_mathlib_info RuntimeError: Broken toolchain: cannot link a simple C program
Mona Jalal

1

ในกรณีของฉันฉันได้ติดตั้งแพนด้า -0.10.0.win-amd64-py2.7 แต่กำลังตรวจสอบว่ามีการแก้ไขข้อบกพร่องในแพนด้าเวอร์ชันล่าสุดหรือไม่ ดังนั้นฉันจึงทำการติดตั้ง easy_install -U เพื่อบังคับให้อัปเกรด แต่แล้วก็ได้รับข้อผิดพลาดข้างต้นเนื่องจากความเข้ากันไม่ได้กับ numpy ฯลฯ ... เมื่อฉันทำ

import pandas

ในการแก้ไขฉันเพิ่งติดตั้งไบนารี pandas-0.10.0.win-amd64-py2.7 ใหม่และทุกอย่างใช้งานได้ ฉันไม่เห็นคำตอบนี้ (แนะนำให้ใช้ pip) ซึ่งอาจช่วยฉันได้ (แต่ไม่แน่ใจ)ติดตั้งเวอร์ชันเฉพาะด้วย easy_install

นอกจากนี้สิ่งนี้ยังเน้นว่าทำไมเราควรใช้ Virtualenv (ซึ่งฉันไม่ได้เป็น)


1

สำหรับฉัน (MacOS X Mavericks) มันใช้งานได้เพื่อติดตั้งเวอร์ชันสำหรับ python2.6:

sudo port install py26-scikit-learn

จากนั้นเรียกใช้:

python2.6 myscript.py

1

ปัญหาที่ฉันแก้ไขใน Webfaction คือไลบรารี numpy เก่า (1.5) ซึ่งขัดแย้งกับของฉันใหม่

pip ติดตั้งแพนด้า

การติดตั้งใน. virtualenv

ปัญหาได้รับการแก้ไขหลังจากที่ฉันติดตั้ง pip แพนด้าจากสภาพแวดล้อมเสมือนจริง แนวคิดนี้มาจากการสนทนาในhttps://github.com/pydata/pandas/issues/3711ขอบคุณcpcloud !


0

ฉันพบปัญหา 'ValueError' นี้และได้แก้ไขแล้ว แน่นอนว่ามีบางอย่างผิดปกติกับแพ็คเกจ numpy

แต่เมื่อพยายามpip install --upgrade numpyแล้วล้มเหลวฉันจึงถอนการติดตั้งและดาวน์โหลดnumpy.zipไฟล์ใหม่ล่าสุด จากนั้นคลายการบีบอัดด้วยตนเองและpython setup.py installมัน

โชคดีที่ได้ผล!


มันล้มเหลวสำหรับฉันด้วย จากนั้นฉันก็ลองsudo pip install --upgrade numpyและมันได้ผล
Harsh Wardhan

0

เช่นเดียวกับที่ @ user333700 กล่าวว่าไลบรารีเวอร์ชันที่ต้องการอาจไม่ตรงตามกัน คุณได้รับหนึ่งไลบรารีเป็นที่พึ่งพาของอีกแห่งหนึ่ง จากนั้นโดยไม่ทราบว่ามีการติดตั้งการอ้างอิงแล้วคุณต้องใช้ไลบรารีเฉพาะนั้นและติดตั้งเวอร์ชันเดียว ด้วยวิธีการดังกล่าวอาจทำให้เกิดความสับสน

ฉันอาศัยอยู่ในกรณีดังกล่าวและมองหาวิธีแก้ปัญหา พบสิ่งนี้: https://stackoverflow.com/a/12975518/1694344

ฉันมีสองเวอร์ชันที่แตกต่างกันสำหรับไฟล์ข้อมูลไข่และชื่อโฟลเดอร์ของ 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

ฉันลบออกทั้งหมดและติดตั้ง numpy ใหม่ด้วย pip


0

ฉันมีปัญหาที่คล้ายกันและเพียงแค่ติดตั้งใหม่โดยใช้pip install ...ตามที่แนะนำในความคิดเห็นก่อนหน้านี้ไม่ได้ผล

สิ่งที่ใช้ได้ผลสำหรับฉันคือการติดตั้งใหม่โดยใช้แฟล็กที่เพิ่มเข้ามาpip install --no-cache-dir ...ดูเหมือนว่าจะมีเวอร์ชัน numpy ที่เข้ากันไม่ได้ในแคช


-1

มีบางกรณีที่คุณต้องการเก็บเวอร์ชัน NumPy ที่เฉพาะเจาะจงและตัวเลือกการอัปเกรดที่กล่าวถึงในที่นี้จะไม่ทำงาน ตัวอย่างที่เกิดขึ้นกับฉันคือการแจกจ่าย Python ที่ติดตั้งไว้ล่วงหน้าด้วย ArcGIS เพื่อให้ ArcPy ทำงานใน ArcGIS 10.5.1 การแจกจ่ายนั้นจะต้องเป็น Python 2.7.12 พร้อม NumPy 1.9.3 และ NumPy เวอร์ชันอื่น ๆ อาจทำให้เกิดปัญหากับฟังก์ชัน ArcPy ของคุณ

สิ่งที่คุณสามารถทำได้กับกรณีนี้คือลองติดตั้งไลบรารีของบุคคลที่สามที่มีปัญหาซึ่งเป็นเวอร์ชันเก่าที่เฉพาะเจาะจงซึ่งควรจะเข้ากันได้กับ NumPy เวอร์ชันเก่ากว่าที่ ArcGIS มี

ตัวอย่างเช่น scikit-learn 0.19.1 จะไม่ทำงานกับ NumPy 1.9.3 และจะส่งผลให้เกิดข้อผิดพลาดเดียวกันกับที่คุณกล่าวถึง อย่างไรก็ตาม scikit-learn 0.15 ทำงานได้ดี คุณสามารถทดสอบเวอร์ชันต่างๆเพื่อค้นหาเวอร์ชันที่ใช้งานได้ เพียงแค่ระบุหมายเลขเวอร์ชันผ่าน pip:

python -m pip install scikit-learn==0.15
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.