Tôi đã tải xuống nguồn Pandas và hiện đang cố gỡ lỗi nó. tôi sửa đổi Makefile:Làm thế nào để gỡ lỗi mã Cython trong 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
Ngoài ra tôi có một kịch bản rất đơn giản:
from numpy import asarray
from pandas import algos
v = [4171.0, 0.0]
expAverage = algos.ewma(asarray(v), 50, 1)
print expAverage
Khi tôi cố gắng chạy nó với python-dbg test1.py, đây là những gì tôi nhận được:
/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]
Điều gì là sai?
Tôi thực sự thấy dễ dàng khi gỡ lỗi cythong để đưa vào báo cáo in (trường cũ), nhưng khá nhanh. – Jeff
Xin chào @ Jeff, tôi thực sự đã tìm thấy nhận xét của bạn rất thú vị. Tôi không phải là một Pandas cũng không phải là người dùng Cython/Python, nhưng tôi đã lập trình trong SAS. Các giáo sư của tôi chưa bao giờ dạy chúng tôi sử dụng các trình gỡ rối, chúng tôi luôn được yêu cầu chỉ sử dụng các bản in ở khắp mọi nơi để kiểm tra các chương trình của chúng tôi khi biên dịch. Vì vậy, nói chung, bạn có nghĩ rằng việc đặt các câu lệnh in chỉ có hiệu quả như các trình gỡ rối ngay cả khi chúng tôi đang sử dụng chúng bằng các ngôn ngữ lập trình khác không? Có vẻ như Pandas có nhiều cú pháp nhất quán hơn R. Cheers. –
trong các trình gỡ rối chung là tốt (ví dụ: pdb). Tôi đã chỉ ra rằng đối với một chức năng tương đối đơn giản và một báo cáo chu kỳ chạy nhanh chóng biên dịch chạy thường đủ – Jeff