ValueError: numpy.dtype का गलत आकार है, पुन: प्रयास करें


86

मैंने सिर्फ अपने अजगर 2.7 पर पांडा और स्टैटमोडेल पैकेज स्थापित किया है जब मैंने "पीडी के रूप में आयात पांडा" की कोशिश की, तो यह त्रुटि संदेश सामने आता है। क्या कोई मदद कर सकता है? धन्यवाद!!!

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
आपने पंडों को कैसे स्थापित किया?
एंडी हेडन

1
संभव नहीं डुप्लीकेट स्किकिट-लर्न को
बकुरीउ जुएल

आप recompiling की कोशिश की?
asmeurer

अजगर (एक्स, वाई), उत्साहित या वाइनपीथॉन वितरण का उपयोग क्यों नहीं करें? वे विशेष रूप से विंडोज़ के तहत वैज्ञानिक अजगर उपयोगकर्ताओं के लिए इन संकलन और स्थापना की समस्याओं को खत्म करने के लिए डिज़ाइन किए गए हैं और उन अधिकांश पैकेजों के साथ आते हैं जिन्हें आप पहले से तैयार करना चाहते हैं।
डेवप

39
यह संदेश तब दिखाता है जब पंडों को आपके द्वारा इंस्टॉल किए गए एक से अधिक नए नए संस्करण के खिलाफ संकलित किया जाता है। आपको या तो आपके द्वारा इंस्टॉल किए गए या खस्ताहाल नंबर के अपडेट के खिलाफ पांडा को फिर से जोड़ने की जरूरत है।
जोसेफ

जवाबों:


65

(मेरी टिप्पणी पर थोड़ा विस्तार करने के लिए)

Numpy डेवलपर्स सामान्य रूप से पिछड़े संगत बाइनरी इंटरफ़ेस (ABI) रखने की नीति का पालन करते हैं। हालाँकि, ABI संगत नहीं है।

इसका मतलब है:

एक पैकेज, जो संकलित विस्तार में सुन्न का उपयोग करता है, एक विशिष्ट संस्करण के खिलाफ संकलित किया जाता है। सुपी का भविष्य संस्करण पैकेज के संकलित विस्तार (नीचे अपवाद देखें) के साथ संगत होगा। उन अन्य पैकेजों के डिस्ट्रीब्यूटर्स को अपने पैकेज को नए संस्करणों के खिलाफ फिर से खोलने की आवश्यकता नहीं होती है और उपयोगकर्ताओं को इन अन्य पैकेजों को अपडेट करने की आवश्यकता नहीं होती है, जब उपयोगकर्ता नए संस्करण के लिए अपडेट करते हैं।

हालाँकि, यह दूसरी दिशा में नहीं जाता है। यदि एक पैकेज को एक विशिष्ट संख्यात्मक संस्करण के खिलाफ संकलित किया जाता है, तो 1.7 कहें, तो इस बात की कोई गारंटी नहीं है कि उस पैकेज के बायनेरिज़ पुराने पुराने संस्करणों के साथ काम करेंगे, 1.6 का कहना है, और बहुत बार या अधिकांश समय वे नहीं करेंगे।

पांडा और स्टैटमोडेल जैसे पैकेजों का द्विआधारी वितरण, जो कि हाल ही के वर्जन के ख़िलाफ़ संकलित किए गए हैं, जब पुराने वर्जन का सिम्पी स्थापित होता है तो यह काम नहीं करेगा। कुछ पैकेज, उदाहरण के लिए, मैटप्लोटलिब, अगर मुझे सही याद है, तो सबसे पुराने संख्यात्मक संस्करण के खिलाफ उनके एक्सटेंशन को संकलित करें जो वे समर्थन करते हैं। इस स्थिति में, एक ही पुराने या किसी भी अधिक हाल के संस्करण के साथ उपयोगकर्ता उन बायनेरिज़ का उपयोग कर सकते हैं।

प्रश्न में त्रुटि संदेश बाइनरी असंगतताओं का एक विशिष्ट परिणाम है।

इसका समाधान द्विआधारी संगत संस्करण प्राप्त करना है, या तो कम से कम उस संस्करण के लिए अद्यतन किया जा रहा है जिसके खिलाफ पांडा या स्टैटमोडेल संकलित किए गए थे, या पहले से स्थापित किए गए सुपी के पुराने संस्करण के खिलाफ पंडों और सांख्यिकीमॉडल को फिर से जोड़ने के लिए।

ABI पिछड़ी संगतता को तोड़ना:

कभी-कभी सुधरने में सुधार या पुनरावृत्ति एबीआई पिछड़ी अनुकूलता को तोड़ती है। यह (अनजाने में) सुन्न 1.4.0 के साथ हुआ। परिणामस्वरूप, उन उपयोगकर्ताओं को जिन्होंने 1.4.0 में खतना को अद्यतन किया, उनके पास अन्य सभी संकलित पैकेजों के साथ द्विआधारी असंगतताएं थीं, जो कि खस्ता के पिछले संस्करण के खिलाफ संकलित की गई थीं। इसके लिए आवश्यक है कि बाइनरी एक्सटेंशन वाले सभी पैकेजों का उपयोग किया जाए जो एबीपी असंगत संस्करण के साथ काम करने के लिए पुन: संकलित किए जाएं।


1
मैंने सुन्न और पांडा को अपडेट करने की कोशिश की और मुझे अभी भी यह त्रुटि मिली है, कोई विचार?
NotSoShabby

37

मेरे लिए (Mac OS X Maverics, Python 2.7)

easy_install --upgrade numpy

मदद की। इसके बाद आप पाइप का उपयोग करके अप-टू-डेट पैकेज पांडा , स्किटिट-लर्न आदि स्थापित कर सकते हैं :

pip install pandas

3
मैंने सिर्फ "easy_install --upgrad numpy" निष्पादित किया है, लेकिन पंडों और ak scikit-learn जैसे संबंधित पैकेजों को स्थापित नहीं किया है। सब कुछ ठीक भी है।
xjzhou

मेरे लिए भी काम किया (Ubuntu 14.04, पायथन 2.7)
हेनरी चिनर

30

मैंने पाया कि यह पुराना या बेमेल होने का एक सरल संस्करण है और इसके साथ तय किया गया था:

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

या एक लाइनर के साथ काम कर सकते हैं:

pip install --upgrade numpy scipy pandas

OSX पर एल कैपिटान परिवर्तन के साथ, मैं ओवररिएटिंग सिस्टम फ़ाइलों से पाइप को रोकने के लिए एक अतिरिक्त तर्क के रूप में --user का उपयोग करने की सलाह देता हूं। उपयोगकर्ताओं को अन्यथा sudo का उपयोग करने के लिए परीक्षा होगी।
रॉय इकोब जूल

@ रॉय- यह इस बात पर निर्भर करता है कि सिस्टम पायथन का उपयोग किया जा रहा है या फिर काढ़ा संस्करण afaik- sudo की जरूरत नहीं है।
रेक्सफॉज

5

मेरे पास एक अन्य लाइब्रेरी के साथ भी ऐसी ही त्रुटि थी और मुझे महसूस हुआ कि मेरे सिस्टम पर कई खसरे के संस्करण स्थापित थे। मेरे लिए यह तय था कि मैं अपने PYTHONPATH को संपादित करूं और उन साइट-पैकेजों को रखूं जिनमें पहले स्थान पर संख्यात्मक रूप से नवीनतम संस्करण था।



1

जब मैं MYSQL का उपयोग करने के लिए पांडा का उपयोग करता हूं तो मुझे भी यह त्रुटि आती है। यह त्रुटि संदेश एक द्विआधारी संगत समस्या को इंगित करता है और पांडा और संख्यात्मक पैकेज के नवीनतम संस्करण का उपयोग करके हल किया जा सकता है। यहाँ इस समस्या को हल करने के लिए मेरे कदम हैं, और यह मेरे 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
मोना जलाल

1

मेरे मामले में, मैंने पांडा-0.10.0.win-amd64-py2.7 स्थापित किया था, लेकिन यह देखने के लिए जाँच कर रहा था कि क्या पांडा के हाल के संस्करण में बग को ठीक किया गया था या नहीं। इसलिए मैंने एक आसान_स्थापना की -यू को अपग्रेड करने के लिए मजबूर किया, लेकिन फिर खामियों आदि के साथ कुछ असंगतताओं के कारण उपरोक्त त्रुटि हुई ... आदि मैंने किया।

import pandas

ठीक करने के लिए, मैंने बस पांडा-0.10.0.win-amd64-py2.7 बाइनरी और सब कुछ काम किया। मैंने यह उत्तर नहीं देखा (पाइप का उपयोग करने का सुझाव देता है) जिसने मेरी मदद की हो सकती है (हालाँकि यकीन नहीं है) easy_install के साथ विशेष संस्करण स्थापित करें

यह भी हाइलाइट करता है कि क्यों एक virtualenv (जो मैं नहीं था) का उपयोग करना चाहिए।


1

मेरे लिए (Mac OS X Mavericks) ने python2.6 के लिए संस्करण को स्थापित करने के लिए काम किया:

sudo port install py26-scikit-learn

फिर भागो:

python2.6 myscript.py

1

वेबफ़ेक्शन पर मैंने जो समस्या हल की थी वह पुरानी संख्या में लाइब्रेरी (1.5) थी जो मेरे ताज़ा संघर्ष में थी

पाइप स्थापित करें

स्थापना .virtualenv में।

वर्चुअल वातावरण से पाइप को स्थापित करने के बाद समस्या हल हो गई थी। विचार चर्चा https://github.com/pydata/pandas/issues/3711 पर आया , धन्यवाद, cpcloud !


0

मैं सिर्फ इस 'ValueError' मुद्दे को पूरा करता हूं और इसे संबोधित किया है। निश्चित रूप से वहाँ कुछ खस्ता पैकेज के साथ गलत है।

लेकिन जब मैं pip install --upgrade numpyइसे विफल करने की कोशिश करता हूं , तो मैं नवीनतम numpy.zipफ़ाइल को अनइंस्टॉल और डाउनलोड करता हूं । फिर मैन्युअल रूप से अनकम्प्रेस्ड और python setup.py installइसे।

सौभाग्य से, यह काम करता है!


यह मेरे लिए भी असफल रहा। फिर मैंने कोशिश की sudo pip install --upgrade numpyऔर यह काम कर गया।
हर्ष वर्धन

0

जैसे @ user333700 ने कहा, पुस्तकालयों के आवश्यक संस्करण एक दूसरे के लिए नहीं मिल सकते हैं। आपको एक लाइब्रेरी दूसरे की निर्भरता के रूप में मिलती है। फिर बिना यह जाने कि यह पहले से ही निर्भरता के रूप में स्थापित है, आपको उस विशिष्ट पुस्तकालय की आवश्यकता है और आप एक संस्करण स्थापित करते हैं। इस तरह के तरीकों से निर्भरता गड़बड़ सकती है।

मैं इस तरह के एक मामले में रहता था और एक समाधान की तलाश करता था। यह पाया: https://stackoverflow.com/a/12975518/1694344

मेरे पास अंडे की जानकारी फ़ाइल और सुपी के फ़ोल्डर नाम के लिए दो अलग-अलग संस्करण थे:

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

मैंने उन सभी को हटा दिया और पाइप के साथ सुन्न को फिर से स्थापित किया।


0

मेरे पास एक समान मुद्दा था, और pip install ...पिछली टिप्पणियों में सुझाए अनुसार उपयोग करके फिर से स्थापित करना काम नहीं आया।

मेरे लिए जो काम किया गया वह जोड़ा ध्वज के साथ फिर से स्थापित pip install --no-cache-dir ...हो रहा था, ऐसा लगता है कि कैश में कहीं एक असंगत संख्यात्मक संस्करण था।


-1

ऐसे मामले हैं जहां आप एक विशिष्ट NumPy संस्करण रखना चाहते हैं और यहां उल्लिखित अपग्रेड विकल्प काम नहीं करेगा। एक उदाहरण जो मेरे साथ हुआ वह था आर्कनिस के साथ पहले से स्थापित पायथन वितरण। आर्कजी को 10.5G में काम करने के लिए, उस वितरण को NumPy 1.9.3 के साथ Python 2.7.12 होना चाहिए और NumPy के किसी भी अन्य संस्करण में संभवतः आपकी ArcPy कार्यक्षमता के साथ समस्याएँ पैदा होने वाली हैं।

इस मामले में आप क्या कर सकते हैं समस्याग्रस्त तीसरे पक्ष के पुस्तकालय के एक विशिष्ट, पुराने संस्करण को स्थापित करने की कोशिश की जाती है जो कि पुराने NumPy संस्करण के साथ संगत माना जाता है जो कि आर्कगिस के पास है।

उदाहरण के लिए, scikit-0.19.1 सीखना NumPy 1.9.3 के साथ काम नहीं करेगा और उसी त्रुटि के परिणामस्वरूप होगा जिसका आपने उल्लेख किया था। हालाँकि, scikit-learn 0.15 ठीक काम करता है। जो काम करता है उसे खोजने के लिए आप विभिन्न संस्करणों का परीक्षण कर सकते हैं। बस पाइप के माध्यम से संस्करण संख्या का उल्लेख करें:

python -m pip install scikit-learn==0.15
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.