2017-10-06 111 views
0

我最近遇到了sentdex tutorial for cython。在試用他的教程代碼時,我注意到的是在編譯之前我們將如何調試我們的cython代碼。如何在編譯之前調試一個cython代碼?

我們可以通過在我們的解釋器中運行example_original.py來調試原始代碼。

#example_original.py 
def test(x): 
    y = 0 
    for i in range(x): 
     y += i 
    return y 
print test(20) 

但是cythonized代碼dosent工作。這是我試圖

1)PY文件

#example_cython.py 
cpdef int test(int x): 
    cdef int y = 0 
    cdef int i 
    for i in range(x): 
     y += i 
    return y 

print test(5) 

錯誤

File "example_cython.py", line 3 
    cpdef int test(int x): 
      ^
    SyntaxError: invalid syntax 

2)PYX文件

#example_cython.pyx 
cpdef int test(int x): 
    cdef int y = 0 
    cdef int i 
    for i in range(x): 
     y += i 
    return y 

print test(5) 

錯誤

./example_cython: not found 
的兩種方式

在編譯之前調試cython代碼的正確方法是什麼?

+0

我不認爲這個問題有多大意義。 Cython是一種編譯語言。要調試它,你必須編譯它。 – DavidW

回答

0

要檢查您的Cython代碼在語法上是否正確,並且沒有可通過靜態分析檢測到的明顯問題,可以使用cythoncythonize命令行工具。

cython path/to/file.pyx運行Cython編譯器,將Cython代碼翻譯成保存在同名文件中的C代碼,其擴展名爲.c,而不是.pyx。如果檢測到問題,它們將被寫入STDOUT/STDERR,但仍可能會生成.c文件。

您可以將-a選項傳遞給該程序,讓編譯器生成一個額外的HTML文件,該文件將突出顯示部分代碼,這會導致額外的Python開銷。

這實際上並沒有將你的代碼編譯成你可以用Python導入的共享庫。您需要在生成的C代碼上調用C編譯器,通常通過Python的工具鏈setuptools/distutils

相關問題