it-swarm.dev

ValueError: numpy.dtype له حجم خاطئ ، حاول إعادة ترجمة

لقد قمت فقط بتثبيت حزمة الباندا و statsmodels على بيثون 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
85
Amber Chen

(لتوسيع قليلا على تعليقي)

يتبع مطورو Numpy بشكل عام سياسة الحفاظ على واجهة ثنائية متوافقة مع الإصدارات السابقة (ABI). ومع ذلك ، فإن ABI غير متوافق إلى الأمام.

مالذي يعنيه ذلك:

يتم تصنيف حزمة تستخدم numpy في ملحق مترجمة مقابل إصدار معين من numpy. سيكون الإصدار المستقبلي من numpy متوافقًا مع الامتداد المترجم للحزمة (للاستثناء ، انظر أدناه). لا يحتاج موزعو تلك الحزم الأخرى إلى إعادة ترجمة الحزمة الخاصة بهم مقابل إصدارات أحدث من numpy ولن يحتاج المستخدمون إلى تحديث هذه الحزم الأخرى ، عندما يقوم المستخدمون بالتحديث إلى إصدار أحدث من numpy.

ومع ذلك ، هذا لا يذهب في الاتجاه الآخر. إذا تم تجميع حزمة مقابل إصدار numpy محدد ، على سبيل المثال 1.7 ، فلا يوجد ما يضمن أن الثنائيات الموجودة في هذه الحزمة ستعمل مع الإصدارات الأقدم numpy ، على سبيل المثال 1.6 ، وغالبًا أو معظمها لن تعمل.

لن يعمل التوزيع الثنائي للحزم مثل الباندا و statsmodels ، التي يتم تجميعها مقابل إصدار حديث من numpy ، عند تثبيت إصدار قديم من numpy. بعض الحزم ، على سبيل المثال ، matplotlib ، إذا كنت أتذكر بشكل صحيح ، تقوم بتجميع امتداداتها مقابل أقدم نسخة سيئة تدعمها. في هذه الحالة ، يمكن للمستخدمين الذين لديهم نفس الإصدار القديم أو الأحدث من numpy استخدام تلك الثنائيات.

رسالة الخطأ في السؤال هي نتيجة نموذجية لعدم التوافق الثنائية.

يكمن الحل في الحصول على إصدار ثنائي متوافق ، إما عن طريق تحديث numpy على الأقل للنسخة التي تم تجميع الباندا أو statsmodels مقابلها ، أو لإعادة ترجمة الباندا و statsmodels مقابل الإصدار القديم من numpy المثبت بالفعل.

كسر توافق ABI الخلفي:

في بعض الأحيان التحسينات أو refactorings في كسر niby التوافق ABI إلى الوراء. حدث هذا (عن غير قصد) مع 1.4.0 numpy. نتيجة لذلك ، كان لدى المستخدمين الذين قاموا بتحديث numpy إلى 1.4.0 عدم توافق ثنائي مع جميع الحزم المترجمة الأخرى ، والتي تم تجميعها مقابل إصدار سابق من numpy. يتطلب ذلك أن كل الحزم ذات الملحقات الثنائية التي تستخدم numpy يجب إعادة تجميعها للعمل مع إصدار ABI غير المتوافق.

62
Josef

بالنسبة لي (Mac OS X Mavericks، Python 2.7)

easy_install --upgrade numpy

ساعد. بعد ذلك ، يمكنك تثبيت حزم محدثة الباندا ، scikit-Learn ، e.t.c. باستخدام pip :

pip install pandas
37
Fedor Chervinskii

لقد وجدت أنها نسخة بسيطة قديمة أو غير متطابقة وتم إصلاحها باستخدام:

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

أو قد تعمل مع الخطوط الملاحية المنتظمة:

pip install --upgrade numpy scipy pandas
30
RexFuzzle

واجهت خطأً مماثلاً في مكتبة أخرى وأدركت أن لدي العديد من إصدارات numpy المثبتة على نظامي. كان الإصلاح بالنسبة لي هو تحرير PYTHONPATH ووضع حزم الموقع التي تحتوي على أحدث إصدار من numpy في المركز الأول.

5
Calimo

كما هو الحال في هنا ، بالنسبة لي فقط Sudo pip install pandas==0.13.1 عملت

2
Tal

بالنسبة لي (Mac OS X Mavericks) ، عملت على تثبيت الإصدار لـ python2.6:

Sudo port install py26-scikit-learn

ثم اركض:

python2.6 myscript.py
1
user3915137

أنا أيضا واجه هذا الخطأ عند استخدام الباندا للوصول إلى 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
Houcheng

كانت المشكلة التي حلتها على Webfaction هي مكتبة قديمة قديمة (1.5) كانت تتعارض مع ملفي الجديد

نقطة تثبيت الباندا

التثبيت في .virtualenv.

تم حل المشكلة بعد أن قمت بتثبيت panda pipas خارج البيئة الافتراضية. جاءت الفكرة من المناقشة على https://github.com/pydata/pandas/issues/3711 ، شكرًا ، cpcloud !

1
ph7

في حالتي ، قمت بتركيب pandas-0.10.0.win-AMD64-py2.7 لكنني كنت أتحقق لمعرفة ما إذا كان قد تم إصلاح الخلل في إصدار أحدث من الباندا. لذا قمت بإجراء easy_install -U لفرض الترقية ، ولكن بعد ذلك حصلت على الخطأ أعلاه بسبب بعض التعارضات مع numpy إلخ ... عندما فعلت

import pandas

لإصلاح ، أنا فقط إعادة تثبيت الثنائي الباندا- 0.10.0.win-AMD64-py2.7 ويعمل كل شيء. لم أر هذه الإجابة (يقترح استخدام النقطة) والتي ربما ساعدتني (وإن لم تكن متأكدًا) تثبيت إصدار معين مع easy_install

يبرز هذا أيضًا لماذا يجب استخدام virtualenv (الذي لم أكن كذلك).

1
Paul

أنا فقط ألتقي بقضية 'ValueError' هذه وقمت بمعالجتها. بالتأكيد هناك شيء خاطئ مع حزمة numpy.

ولكن عندما حاولت pip install --upgrade numpy فشلت ، لذلك قمت بإلغاء تثبيت وتنزيل أحدث ملف numpy.Zip. ثم يدويا إلغاء ضغط و python setup.py install ذلك.

لحسن الحظ ، إنه يعمل!

0
Yuhao

واجهت مشكلة مماثلة ، وإعادة التثبيت ببساطة باستخدام pip install ... كما هو مقترح في التعليقات السابقة لم ينجح.

ما نجح بالنسبة لي كان إعادة التثبيت مع العلم المضافة pip install --no-cache-dir ... ، يبدو أنه كان هناك إصدار غير متوافق غير مناسب في مكان ما في ذاكرة التخزين المؤقت.

0
Yossi Vainshtein

هناك حالات تريد فيها الاحتفاظ بإصدار 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 يعمل بشكل جيد. يمكنك اختبار إصدارات مختلفة للعثور على الإصدار الذي يعمل. أذكر فقط رقم الإصدار من خلال النقطة:

python -m pip install scikit-learn==0.15
0
dbouz

كما قال @ user333700 ، قد لا تتوافق الإصدارات المطلوبة من المكتبات مع بعضها البعض. يمكنك الحصول على مكتبة واحدة تبعية الآخر. ثم دون معرفة أنه قد تم تثبيته بالفعل كتبعية ، فإنك تحتاج إلى مكتبة محددة وتثبيت إصدار واحد. مع هذه الطرق قد تبتلع التبعيات.

عشت مثل هذه الحالة وبحثت عن حل. وجدت هذا: https://stackoverflow.com/a/12975518/1694344

كان لدي نسختان مختلفتان لملف Egg-info واسم مجلد 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.

0
Sedat Kestepe