rel*_*mes 7 python debugging cython pandas
我已经下载了Pandas源代码,现在正在尝试调试它.我修改了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
Run Code Online (Sandbox Code Playgroud)
我还有一个非常简单的脚本:
from numpy import asarray
from pandas import algos
v = [4171.0, 0.0]
expAverage = algos.ewma(asarray(v), 50, 1)
print expAverage
Run Code Online (Sandbox Code Playgroud)
当我尝试使用python-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]
Run Code Online (Sandbox Code Playgroud)
怎么了?
python-dbg可以使用的方式使用调试信息进行编译。这个解释有详细信息:
http://hustoknow.blogspot.co.uk/2013/06/why-your-python-program-cant-start-when.html
对我来说, flag 似乎--with-pydebug不等同/触发与 相同的操作--pyrex-gdb。顺便说一句,似乎--pyrex-gdb已重命名为--cython-gdb.
cygdb或者cython --gdb代替吗?据报告,您正在使用的标志似乎不起作用:https://groups.google.com/forum/#! topic/cython-users/K6sjhzUX5JA