2012-11-27 12 views
9

पाइथन 2.7.3 का उपयोग 64-बिट उबंटू 12.04 पर Numpy 1.6.2 के साथ। सिस्टम पर अतिरिक्त संस्करण मौजूद हैं (पायथन 2.6.4 और नम्पी 1.6.1) लेकिन मेरे ज्ञान के सर्वश्रेष्ठ से नीचे वर्णित घटनाओं पर इसका कोई प्रभाव नहीं पड़ता है।पाइथन-डीबीजी (अपरिभाषित प्रतीक: Py_InitModule4_64)

मैं एक पायथन प्रोग्राम पर काम कर रहा हूं जो Numpy का उपयोग करता है, और जब मैं प्रोग्राम से एक निश्चित कमांड चलाने की कोशिश करता हूं तो त्रुटि प्राप्त होती है। इसलिए, मैंने प्रोग्राम चलाने के लिए python2.7-dbg इंस्टॉल करने का निर्णय लिया और देखा कि क्या यह डिबगिंग में मदद कर सकता है। इसलिए मैं

$ python-dbg <command> 

बजाय

$ python <command> 

हालांकि चलाने के लिए, यह एक "अपरिभाषित प्रतीक: Py_InitModule4_64" देता है Numpy से संबंधित त्रुटि। इससे कोई फर्क नहीं पड़ता कि मैं वास्तव में चलाने की कोशिश करता हूं; त्रुटि "आदेश" पायथन के साथ चलने वाले आदेशों के लिए भी होती है। यह भी होता है अगर मैं एक खाली अजगर-dbg शीघ्र में numpy आयात करने का प्रयास:

$ python-dbg 
Python 2.7.3 (default, Aug 1 2012, 04:55:00) 
[GCC 4.6.3] on linux2 
Type "help", "copyright", "credits" or "license" for more information. 
>>> import numpy 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
    File "/usr/local/lib/python2.7/dist-packages/numpy/__init__.py", line 137, in <module> 
    import add_newdocs 
    File "/usr/local/lib/python2.7/dist-packages/numpy/add_newdocs.py", line 9, in <module> 
    from numpy.lib import add_newdoc 
    File "/usr/local/lib/python2.7/dist-packages/numpy/lib/__init__.py", line 4, in <module> 
    from type_check import * 
    File "/usr/local/lib/python2.7/dist-packages/numpy/lib/type_check.py", line 8, in <module> 
    import numpy.core.numeric as _nx 
    File "/usr/local/lib/python2.7/dist-packages/numpy/core/__init__.py", line 5, in <module> 
    import multiarray 
ImportError: /usr/local/lib/python2.7/dist-packages/numpy/core/multiarray.so: undefined symbol: Py_InitModule4_64 
[134187 refs] 
>>> 

आयात कर रहा है numpy सफल होता है जब एक शुद्ध अजगर प्रॉम्प्ट में।

मुझे इंटरनेट पर कोई भाग्य जानकारी नहीं मिली है। मेरी त्रुटि का सबसे नज़दीकी मैच this bug on debian है जो एक ही स्थिति है लेकिन किसी और जानकारी प्रदान करने से पहले बंद कर दिया गया है। मैंने एपीटी से पायथन-नॅपी-डीबीजी और पायथन-एपीटी-डीबीजी पैकेज दोनों स्थापित किए हैं; मेरे पास मशीन तक सुडो पहुंच है इसलिए मेरे द्वारा किए गए परिवर्तन वैध सिस्टम-व्यापी हैं। जहां तक ​​मुझे पता है, मैं जिस भी प्रक्रिया को चलाने की कोशिश कर रहा हूं, उसके लिए कोई भी क्रोट विकल्प सेट नहीं किया गया है, इसलिए डेबियन बग पेज मुझे कोई मदद नहीं है।

किसी भी सहायता की सराहना की जाएगी।

+0

आप अपने '$ PYTHONPATH' पर्यावरण चर को देखना चाहते हैं। उबंटू के लिए सिर्फ अजगर-numpy-dbg पैकेज को देखकर इसे/usr/local/lib से आयात नहीं किया जाना चाहिए। यही इस बारे में अजीब लग रहा है। – Iguananaut

+0

या, बिंदु पर अधिक, यहां तक ​​कि यदि '$ PYTHONPATH' पर कुछ भी नहीं है, ऐसा लगता है कि आपने अपनी खुद की प्रतिलिपि (शायद पीपी या easy_install का उपयोग करके) स्थापित की है और यह उपयुक्त द्वारा स्थापित Numpy का सुपरसर्ड्स कर रहा है। – Iguananaut

+0

धन्यवाद, मुझे लगता है कि आपने मुझे सही रास्ते पर सेट किया है। इस परियोजना में शामिल होने से पहले सिस्टम पर मौजूद numpy (1.6.1) का पिछले संस्करण /usr/lib/python2.7/dist-packages में है, और जिसे मैंने स्थापित किया है (1.6.2) पाइप के माध्यम से है /usr/local/lib/python2.7/dist-packages में रखा गया है। मुझे नहीं लगता था कि इससे बहुत अधिक मायने रखता है लेकिन अब मैंने sys.path की जांच की है, numpy वहाँ नहीं था। तो अब मैं पथ में नया numpy जोड़ने की कोशिश करूँगा, या पुराने पर वापस आ जाएगा। – Boris

उत्तर

2

ओपी द्वारा पुष्टि के अनुसार, यहां सुराग ट्रेसबैक में है जो दिखाता है कि numpy आप आयात कर रहे हैं /usr/local/lib/ में। हालांकि, apt द्वारा स्थापित संकुल /usr/lib/pythonX.Y में जाते हैं, जहां pip, easy_install, आदि के साथ स्थापित गैर-उबंटू पायथन पैकेज /usr/local/lib/pythonX.Y के तहत स्थापित होते हैं और सिस्टम पैकेज को सुपरसिस करते हैं।

अब के लिए आपको /usr/local/lib/python2.7/dist-packages के तहत स्थापित नम्पी को अनइंस्टॉल करना चाहिए ताकि एक पायथन-numpy द्वारा काम करने के लिए इंस्टॉल किया जा सके। भविष्य में आप दोनों के बीच स्विच करने के लिए usercustomize.py के साथ स्थापित और कुछ करने में सक्षम हो सकते हैं, लेकिन मैं अभी उबंटू मशीन पर नहीं हूं इसलिए मेरे पास इसका परीक्षण करने का कोई तरीका नहीं है।

+0

बहुत बहुत धन्यवाद! मुझे डर था कि किसी ने जवाब देने में घंटों या दिन लगेंगे, लेकिन आपने जल्द ही इसे हल करने के लिए उत्तर दिया और आगे बढ़ने के लिए :) – Boris

+4

क्या आप वास्तव में कह रहे हैं कि संकलित पाइथन एक्सटेंशन पाइप या easy_install (पायथन मॉड्यूल के लिए मानक) के माध्यम से स्थापित है। पायथन-डीबीजी के साथ काम नहीं करेगा? यह मेरे लिए एक बड़ी बग की तरह लगता है। – papercrane

+1

इस त्रुटि का एक कारण यह भी हो सकता है कि आप एक अलग पायथन संस्करण (यानी गैर डीबीजी संस्करण) के लिए साइट-पैकेज (वर्चुअलएन्व से) के साथ चलें। सेटअप को ठीक करने के लिए एक नया वर्चुअलनव सही पायथन बाइनरी को इंगित करता है और आवश्यकता फ़ाइल से संकुल लोड करता है। –