2013-12-13 7 views
6

मैंने पांडस स्रोत डाउनलोड किया है और अब इसे डीबग करने का प्रयास कर रहा है। मैं Makefile संशोधित:पांडस में साइथन कोड कैसे डिबग करें?

sparse: pandas/src/sparse.pyx 
python-dbg setup.py build_ext --inplace --pyrex-gdb 

build: clean_pyc 
python-dbg setup.py build_ext --inplace --pyrex-gdb 

develop: build 
-python-dbg setup.py develop --pyrex-gdb 

इसके अलावा, मैं एक बहुत ही सरल स्क्रिप्ट है:

from numpy import asarray 
from pandas import algos 

v = [4171.0, 0.0] 
expAverage = algos.ewma(asarray(v), 50, 1) 

print expAverage 

जब मैं अजगर-dbg test1.py के साथ चलाने का प्रयास है, यह मैं क्या मिलता है:

/tmp/1/pandas/pandas/hashtable.so: undefined symbol: Py_InitModule4_64 
Traceback (most recent call last): 
    File "test1.py", line 2, in <module> 
    from pandas import algos 
    File "/tmp/1/pandas/pandas/__init__.py", line 6, in <module> 
    from . import hashtable, tslib, lib 
ImportError: /tmp/1/pandas/pandas/hashtable.so: undefined symbol: Py_InitModule4_64 
[94423 refs] 

क्या गलत है?

+2

मैं वास्तव में यह बस के रूप में आसान जब cythong डिबगिंग सिर्फ प्रिंट बयान (पुराने स्कूल) में डालने के लिए लगता है, लेकिन बहुत जल्दी है। – Jeff

+0

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

+0

अच्छे हैं (जैसे पीडीबी)। मैं बस यह इंगित कर रहा था कि अपेक्षाकृत सरल कार्य और त्वरित संकलन-चक्र चक्र प्रिंट विवरण अक्सर – Jeff

उत्तर

1
  1. जाहिर है, आपके द्वारा लोड किए जा रहे कम से कम एक (सी) एक्सटेंशन को डीबग जानकारी के साथ संकलित नहीं किया गया है जिस तरह python-dbg उपयोग कर सकते हैं।

इस विवरण का विवरण होता है:

http://hustoknow.blogspot.co.uk/2013/06/why-your-python-program-cant-start-when.html

मेरे लिए यह लगता है --with-pydebug झंडा बराबर/नहीं है --pyrex-gdb रूप में एक ही कार्रवाई से चलाता है। बीटीडब्ल्यू, ऐसा लगता है कि --pyrex-gdb का नाम बदलकर --cython-gdb कर दिया गया है।

  1. क्या आप इसके बजाय cygdb या cython --gdb का उपयोग कर सकते हैं? यह ध्वज है कि आप प्रयोग कर रहे हैं सूचित किया गया है काम करने के लिए नहीं की तरह लगता है: https://groups.google.com/forum/#!topic/cython-users/K6sjhzUX5JA
+0

आपके उत्तर के लिए धन्यवाद। लेकिन मैं इसे बहुत पहले नहीं देख सकता था (वास्तव में पाइथन कोड सिर्फ एक प्रोटोटाइप था और मैं जावा में सबकुछ फिर से लिखता हूं)। – relgames

संबंधित मुद्दे