Ho scaricato il codice sorgente di Pandas e ora sto provando a eseguirne il debug. Ho modificato Makefile:Come eseguire il debug del codice Cython in Pandas?
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
Inoltre Ho uno script molto semplice:
from numpy import asarray
from pandas import algos
v = [4171.0, 0.0]
expAverage = algos.ewma(asarray(v), 50, 1)
print expAverage
Quando provo ad eseguirlo con python-dbg test1.py, questo è quello che ottengo:
/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]
Cosa c'è che non va?
Non mi pare altrettanto facile quando il debug cythong ad appena messo in istruzioni di stampa (vecchia scuola), ma è piuttosto veloce. – Jeff
Ciao @ Jeff, in realtà ho trovato il tuo commento molto interessante. Non sono né un utente di Pandas né di Cython/Python, ma ho programmato in SAS. I miei professori non ci hanno mai insegnato a usare i debugger, ci è stato sempre detto di usare semplicemente le dichiarazioni di stampa ovunque per controllare i nostri programmi durante la compilazione. Quindi, in generale, pensi che mettere le dichiarazioni di stampa sia efficace quanto i debugger anche se li stiamo usando in altri linguaggi di programmazione? Sembra che Pandas abbia più una sintassi coerente di R. Cheers. –
in generale i debugger sono buoni (ad esempio pdb). Stavo solo sottolineando che per una funzione relativamente semplice e un breve ciclo di compilazione le dichiarazioni di stampa spesso sono sufficienti – Jeff